|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
bonjour à tous,
Je veux écrire une chaine de caractère avec un retour chariot dans un fichier. Par exemple mon string est : Code :
string str_Code = "do\n{\n code\n}\nwhile (true);\n"; Comment on peut interpréter ce caractère spécial? Merci. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() |
Alors, oui et non.
std::endl va marcher, on est sur qu'il y aura un saut de ligne MAIS il va aussi décharger le buffer, et donc si jamais c'est un code qui doit être très performant ça deviens vite un frein. Donc, la plupart du temps oui std::endl suffira, mais attention à l'effet de perte de vitesse du au déchargement du buffer. Que faire quand on ne veut pas utiliser std::endl? En fait ce n'est pas un problème de C++ mais bien de comment les logiciels de l'environnement vont lire les caractères? Le problèmes se situe dans la différence entre windows qui par défaut va nécessiter des \n\r tandis que les OS unix-like vont nécessiter des \n (ou l'inverse, je sais plus à vrai dire...). Donc, si tu écris dans un editeur de texte, tu peux voir tes \n correctement. Si tu écris dans la console, normalement \n est suffisant mais il se peut que sous certaines conditions \n\r soit nécessaire. Bon ya pas de solution miracle alors faut juste être conscient du contexte. |
|
|
00
|
|
|
#4 |
|
Inscrit
Inscription : juin 2007 Messages : 149 ![]() |
En fait,
Je dois écrire la chaine de caractère dans un fichier Je reçoit dans le fichier la même chaine sans interprétaion du \n ni du \n\r Résultat reçu est : do\n{\n code\n}\nwhile (true);\n Comment faire? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
Normalement tu n'as rien a faire, sauf si ce que tu recois est :
C'est à dire que les \ est un caractère affiché mais tu ne le veux pas pas plus que n. Dans ce cas, il suffit de "remplacer" les "\\n" par des '\n' Utilise std::replace par exemple. Ce que tu dois comprendre c'est que '\n' est un caractère seul, '\\' est le caractère \ seul, non interpretté, "\\n" est une chaine de caractère avec '\\' et 'n' comme caractères. Une fois que tu as compris ça, il suffit de faire un remplacement. |
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Inscription : mai 2005 Messages : 168 ![]() |
Salut,
Chez moi, ce code marche, (testé avec g++ 3.4 sous Red Hat 4). Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() |
C'est ce que je disais, normalement ya rien a changer mais je suspecte que le problème viens d'un texte qui s'affiche dans la console comme dans le premier post mais du coup le contenu du string n'est pas exactement le même, comme je l'ai décris.
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() nabil temalÉtudiant Inscription : février 2012 Messages : 10 ![]() |
tu ne peut pas écrire un string dans un fichier, il faut que tu convertis ton string en pointeur sur une chaîne de caractère avant d'écrire dans le fichier:
Code :
|
||
|
|
04
|
|
|
#9 | ||
|
Membre Expert
![]() Junior developer C/C++/Embedded system Inscription : juin 2010 Messages : 656 ![]() |
Tu peux très bien écrire une chaîne de caractère dans un fichier, étant donné qu'on est sur le forum C++ on parlera de string dans un flux.
Cf le code plus haut Code :
|
||
|
|
20
|
|
|
#10 | ||
![]() ![]() Inscription : juin 2008 Messages : 7 494 ![]() |
A ma connaissance, il n'existe rien de spécial. Il faut se pallucher le boulot à la main :
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com