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 :
Ma std::string est bien lu mais je ne peut pas la modifier sans comportements étranges.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Admettons que mon fichier soit : monFichier.txt.
Si, par exemple, je veux l'afficher encadré par deux lettres :
j'obtiens : bonFichier.txt (le m à été remplacé par le a puis par le b je suppose).
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << "a" << fileName << "b" << endl;
Si j'avais écris :
j'aurais obtenu : bbbFichier.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part cout << "a" << fileName << "bbb" << endl;
Et si j'avais voulu concaténer deux std::string :
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fileName += string("b"); cout << fileName << endl;
j'aurais obtenu dans les deux cas : bonFichier.txt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 fileName.append(string("b")); cout << fileName << endl;
Est ce que ce comportement vous dit quelque chose ?
Un grand merci d'avance pour votre aide.
Partager