Problème avec les ajouts de chaînes de caractères [Résolu]

Signaler
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour je voudrais ouvrir un fichier en utilisant :

ifstream entree (nom_fichier, ios::in|ios::binary);

où nom_fichier est le nom du fichier ;)

Puis j'effectue un traitement

Cependant, j'ai plusieurs fichiers différents pour lesquels je dois effectuer le même traitement et donc je pensais faire une boucle du style :

char nom_fichier
for(int i=0;i<4;i++){
nom_fichier=char(i)+"c.dat";
// Ouverture
// Traitement
}

mais quand ensuite "j'ouvre" le fichier, le compilateur (devc++) me retourne l'erreur suivante : 
invalid conversion from `const char*' to `char'

Que faire ?

Merci d'avance

NC

6 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Le constructeur de ifstream n'est pas surchargé pour un string, il veut un char*
Tu fais donc ceci:
ifstream entree (nom_fichier.str().c_str(), ios::in|ios::binary);

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
#include <sstream>
...
ostringstream ost;
ost << i;
ost << "c.dat";
//ouverture
ifstream entree(ost.str(), ...);

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
De toute facon, CHAR est un CARACTERE et pas une CHAINE.
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008

J'ai fait ce que vous m'avez dit, mais cependant, quand je compile ca me met :
no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, const std::_Ios_Openmode&)' à la ligne où il y a ifstream ... :(
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
t'as mis #include <fstream> ?


Mais repost ton programme, sur ton premier post, le programme est faux.
Donc c'est difficile de dire quoi que ce soit, si on voit pas ton
programme.
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008

oui j'ai fait un include de <fstream> donc le programme est maintenant ceci:


for(int j=0;j<=9;j++){
ostringstream nom_fichier;
nom_fichier<<j<<"c.dat";  


ifstream entree (nom_fichier.str(), ios::in|ios::binary);
// Traitement
}