C++ : Caractères spéciaux et fichiers .txt

Fermé
Zariel - 9 mars 2011 à 15:39
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 mars 2011 à 12:13
Bonjour,

Je voudrais, si possible, que l'on m'aide sur un point. A vrai dire je suis en train de créer un programme et j'ai besoin à un moment de stocker ce qui se trouve dans string, dans un fichier. Le problème est que les accents ne sont pas stocker correctement dans le fichier .txt.

Voici le code que j'ai fait pour tester différentes solutions.

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
#include <fstream>

using namespace std;


int main()
{
	string monString = "Là tu fais le bébé ça ne va pas";
	
	ofstream fichier("fichiertest.txt", ios::out | ios::trunc);
	
	fichier << monString;
	
	fichier.close();
}


Bien entendu je ne post pas ici alors que je n'ai pas cherché. J'ai essayé pendant des heures de trouver une solution sur le net mais rien de satisfaisant. Donc si quelqu'un pourrait modifier le code que j'ai mis ci-dessus pour que ce qui apparaisse dans le fichier soit bien "Là tu fais le bébé ça ne va pas", et pas "L?+ tu fais le b?©b?© ?ßa ne va pas", je lui en serais fort reconnaissant. :)

Sinon si vous ne pouvez pas m'aider (même si vous pouvez d'ailleurs), merci à vous d'avoir lu mon post. :)

3 réponses

Allen1210 Messages postés 363 Date d'inscription lundi 14 juin 2010 Statut Membre Dernière intervention 28 avril 2017 56
9 mars 2011 à 15:49
As tu essayer de faire la lecture DANS TON PROGRAMME? Souvent les flux d'écriture et de lecture utilise un "code" de cryptage pour reconnaitre tous les caractères. Ainsi, la lecture dans le programme devrais être correcte. Sinon, il doit surement exister une option ou une autre méthode que celle que tu prend pour écrire normalement dans un fichier texte.
0
Qu'entends-tu par "lecture dans le programme" ?
0
Allen1210 Messages postés 363 Date d'inscription lundi 14 juin 2010 Statut Membre Dernière intervention 28 avril 2017 56
9 mars 2011 à 15:54
Le code que tu as montré est un code d'écriture. Il existe un code probablement semblable où tu peut faire la lecture de ton fichier.
0
Oui, avec ifstream. Mais plus tôt dans mon programme en fait j'extrais le contenu d'un fichier contenant une réponse XML, contenant des accents. Mais dans ce cas là, tout à l'air de fonctionner correctement. Donc la lecture parait bonne mais le problème vient, on dirait, de l'écriture.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 mars 2011 à 15:52
Salut.
Je pense que pour gérer correctement les caractères accentués, il vau mieux utiliser wstring que string https://en.cppreference.com/w/cpp/string .
string est fait pour l'ASCII.
0
Le problème snipeur, c'est que le string que j'ai là, en fait je fais tout un traitement avant dessus pour l'obtenir, du coup si j'utilise wstring il faut que je recode entièrement le traitement en question.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 mars 2011 à 16:12
C'est pas clair. Je ne vois pas pourquoi tu devrais tout recoder sous prétexte que tu change le type de ta variable ?
Le problème des caractères accentués, c'est qu'il y a plusieurs normes de codage qui ont à peu près d'égale importance (ISO8... et UTF-...)
0
Don si je comprends bien, je garde ma variable de type string, je la transforme en wstring, et là j'écris dans mon fichier?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
9 mars 2011 à 16:43
non, tu fait tout depuis le début avec wstring.
enfin, ça manque de code source pour être entièrement affirmatif.
0
J'ai essayé mais ça ne m'affiche toujours pas les bons caractères, genre le "é" devient un "È".
0