Pb d'ouverture de fichiers en C++
DEBUTANT EN C++
Bonjour,
Je dois lister un repertoire dans lequel il y a des fichiers images .bmp
et ecrire le nom de ces fichiers dans fichier .txt (blanc si le fichier n'existe pas)
Fichier.txt
nom1
nom2
nom4
...
Les noms des fichiers images sont :
Img00000001_001
Img00000002_002
Img00000003_005 saut de 2 a 5, mais premier chiffre inc de 1
Img00000004_006
Img00000005_008
....
Img00000999_150
le premier numero est tj incremente de 1
le deuxieme ne l'est pas (perte d'image au cours de l'acq donc saut a l'image suivante)
j'utilise DEV-C++
A la compil du prog, j'ai les erreurs suivantes : (ouvertures de fichiers)
53 C:\Dev-Cpp\Projet VI\main.cpp no matching function for call to `std::basic_ofstream<char, std::char_traits<char> >::basic_ofstream(std::string&, const std::_Ios_Openmode&)'
90 C:\Dev-Cpp\Projet VI\main.cpp no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)'
Merci de votre aide pour resoudre ce pb.
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
| #include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <fstream.h>
#include <strstream>
#include <sstream>
#include <stdio.h>
#include <io.h> //_findfirst routines (system calls)
using namespace std;
main()
{
std::string CHEMIN_FICHIER; // Fichier a creer
std::string CHEMIN_REPERTOIRE; // Chemin du Repertoire a lister
std::string NAME; // Nom du fichier a trouver
std::string tampon1,tampon2; // tampons pour conv. int to string
int i, j; // numero immage
int NBIMAGES, PREFICHIMG, DERFICHIMG;
// Creation d'un fichier :
std::cout << "Entrez le CHEMIN DU FICHIER a creer Ex: (c:\\temp\\acqimg.txt)\n";
std::cin >> CHEMIN_FICHIER;
std::cout << "\n" << CHEMIN_FICHIER;
std::cout << "\n";
std::cout << "Entrez le CHEMIN DU REPERTOIRE a lister (Ex: c:\\ACQ\\images)\n";
std::cin >> CHEMIN_REPERTOIRE;
std::cout << "\n" << CHEMIN_REPERTOIRE;
std::cout << "\n";
std::cout << "Entrez le nombre d'images acquises (projet VI 3000) : ";
std::cin >> NBIMAGES;
std::cout << NBIMAGES;
std::cout << "\n";
std::cout << "Entrez le numero * du premier fichier image du repertoire a lister\n (Img0000000*_000) : ";
std::cin >> PREFICHIMG;
std::cout << PREFICHIMG;
std::cout << "\n";
std::cout << "Entrez le numero *** du dernier fichier image du repertoire (max 999) a lister\n (Img00000***_000) : ";
std::cin >> DERFICHIMG;
std::cout << DERFICHIMG;
std::cout << "\n";
// Lire le repertoire et remplir le fichier avec les noms des fichiers images existants
ofstream outfile(CHEMIN_FICHIER,ios::app); // Ouverture fichier en mode ecriture :arrow:
{
for (i=PREFICHIMG; i=DERFICHIMG; i++)
{
// créer un flux de sortie
std::ostringstream oss;
// écrire un nombre dans le flux
oss << i;
// récupérer une chaîne de caractères
std::string tampon1 = oss.str();
for (j=i; j=NBIMAGES; j++)
{
// Creation du chemin du repertoire a lister
// créer un flux de sortie
std::ostringstream oss;
// écrire un nombre dans le flux
oss << j;
// récupérer une chaîne de caractères
std::string tampon2 = oss.str();
// Nom du fichier image suivant les valeurs de i et j
if ((0<=i<10) && (0<=j<10))
NAME = "Image0000000"+tampon1+"_00"+tampon2+".bmp";
if ((10<=i<100) && (10<=j<100))
NAME = "Image000000"+tampon1+"_0"+tampon2+".bmp";
if ((100<i<=DERFICHIMG) && (100<j<=NBIMAGES))
NAME = "Image00000"+tampon1+"_"+tampon2+".bmp";
CHEMIN_REPERTOIRE = CHEMIN_REPERTOIRE+"\\"+NAME;
ifstream infile(CHEMIN_REPERTOIRE); // Ouverture fichier en mode lecture :arrow:
{
if(!infile) // Ecriture dans le fichier cree
{
outfile << "\n";
}
else
outfile << CHEMIN_REPERTOIRE;
}
infile.close();
}
}
}
outfile.close(); // Fermeture du fichier cree
cin.ignore(); cin.ignore();
} |