Problème avec les ajouts de chaînes de caractères

Résolu
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 27 juin 2006 à 15:28
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 28 juin 2006 à 10:27
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 juin 2006 à 10:27
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
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 juin 2006 à 15:33
#include <sstream>
...
ostringstream ost;
ost << i;
ost << "c.dat";
//ouverture
ifstream entree(ost.str(), ...);

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
27 juin 2006 à 15:55
De toute facon, CHAR est un CARACTERE et pas une CHAINE.
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
27 juin 2006 à 18:56
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 ... :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 juin 2006 à 09:54
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.
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
28 juin 2006 à 10:08
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
}  


 
0
Rejoignez-nous