Bonjour,
Je travaille actuellement sous Redhat 9, avec le compilateur g++. J'ai créé une ptite classe StringList, qui contient une liste de string à la manière du TStringList de C++ Builder. J'ai développé des méthodes LoadFromFile, et SaveToFile...
Code :
- void StringList::SaveToFile(string nom_fichier)
- {
- std::ofstream fe (nom_fichier.c_str());
- int i;
- if(fe!=NULL)
- {
- i=0;
- while(i<this->Count)
- {
- fe << this->Strings[i].c_str() << "\r\n";
- i++;
- }
- }
- fe.close();
- }
|
Les fichiers que je convertis avec mon application sont utilisés en entrée d'une autre application, sous Windows. Cette application sous Windows est un modèle de simulation, et a été développée il y a fort longtemps... et il ne parvient pas à lire mes fichiers textes créés sous Unix ! Il fonctionne un peu de la même manière que le simple notepad de Windows, et ne reconnait pas les retours chariots... donc ça me pose des problèmes, car je ne peux absolument pas changer le modèle de simulation.
J'ai donc tenté :
- \n : c'est reconnu comme des caractères spéciaux
- \r\n : c'est reconnu comme des retours chariots, avec des caractères spéciaux au milieu. D'ailleurs si j'ouvre mon fichier sous vi j'ai :
ligne1:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne2:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne3:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne4:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne5:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne6:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne7:^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne8:^M^M^M^M^M^M^M^M^M^M^M^M^M^M ligne9:^M^M^M^M^M^M^M^M^M^M^M^M^M etc |
c'est louche quand meme !
- std::endl; : ce n'est pas reconnu comme des retours chariots
Peut-être est-il nécessaire que je passe par une application extérieure sous Unix, pour convertir ces foutus retours chariots ?!! Ou y'a-t'il d'autres méthodes pour écrire correctement mes fichiers ?...
Merci pour vos suggestions !