Un probl�me avec une std::string
Salut � tous,
je cherche � passer sur mac un code d�velopp� sur windows.
J'ai commenc� par �tre confront� � une diff�rence concernant les chemins relatifs que j'ai r�gl� avec _NSGetExecutablePath.
Maintenant je me retrouve avec un comportement �trange sur une std::string (il n'y a peu �tre aucun rapport avec le passage sur mac mais �a fonctionnait sous windows alors je pr�f�re vous le dire).
Mon probl�me est le suivant : je lis dans un fichier le nom d'un autre fichier � l'aide de la fonction :
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
| string readFileName(string fileName, string tag)
{
string line;
string result;
string balise = string(tag);
ifstream file(fileName, ios::in);
if(file)
{
while(!file.eof())
{
getline(file, line);
if (line.find(balise) != string::npos)
{
result = line.substr(balise.length()+3);
}
}
}
file.close();
return result;
} |
Ma std::string est bien lu mais je ne peut pas la modifier sans comportements �tranges.
Admettons que mon fichier soit : monFichier.txt.
Si, par exemple, je veux l'afficher encadr� par deux lettres :
Code:
cout << "a" << fileName << "b" << endl;
j'obtiens : bonFichier.txt (le m � �t� remplac� par le a puis par le b je suppose).
Si j'avais �cris :
Code:
cout << "a" << fileName << "bbb" << endl;
j'aurais obtenu : bbbFichier.txt
Et si j'avais voulu concat�ner deux std::string :
Code:
1 2
| fileName += string("b");
cout << fileName << endl; |
ou encore
Code:
1 2
| fileName.append(string("b"));
cout << fileName << endl; |
j'aurais obtenu dans les deux cas : bonFichier.txt.
Est ce que ce comportement vous dit quelque chose ?
Un grand merci d'avance pour votre aide.