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.