Ok donc fallait juste écrire
setlocale(LC_ALL,"");
au début de mon programme.:roll:
Ça a l'air bête, mais quand on sait pas, il y a quasiment aucun moyen de le savoir puisqu'Il n'y a...
Type: Messages; Utilisateur: wistiti1234
Ok donc fallait juste écrire
setlocale(LC_ALL,"");
au début de mon programme.:roll:
Ça a l'air bête, mais quand on sait pas, il y a quasiment aucun moyen de le savoir puisqu'Il n'y a...
Finalement j'ai eu un week-end très chargé, j'ai pas pu avancer beaucoup.
Mais j'ai quand même pu testé les ustring, mais ça ne s'affiche pas mieux (au moins ça m'affiche un message d'erreur clair...
Voilà l'explication de mon sizeof('é') = 4!
Effectivement, 'é' est un int, et un int vaut 4 octets chez moi. (ça dépend des environnement je crois).
Sinon le reste du code m'a renvoyé sans surprise...
Je comprend plus rien. Maintenant la sortie vers un fichier de caractères étendu fonctionne!
Le code suivant marche:
wofstream file("test.txt", ios::out);
file.imbue(locale("fr_FR.UTF-8"));...
Oui. Pas avec ton test, mais en faisant une sortie texte standard, type file << "blabla"; qui lui s'inscrivait sans problème.
Je sais pas si c'est ce que tu attends, mais
wchar_t c = L'é';
wstring ch1 = L"lettre accentué";
cout << ch1.length() << endl;
cout << sizeof(ch1) << endl;
cout << sizeof(c) << endl;
me donne...
Ce que je comprends pas c'est que si j'écris:
wofstream file("test.txt", ios::out);
wstring ch1 = L"lettre accentué";
file << ch1 << endl;
file << ch1[14] << endl;
file.close();
Aucun octet...
Ah quoique. En faisant un "locale" dans un terminale, je lis "LC_CTYPE=fr_FR.UTF-8".
Donc peut-être que les commandes ctype sont quand même adapté aux caractères étendu.
Vous en pensez quoi?
Par ailleurs, est-ce que la série des isprint, isalpha, toupper etc... continuent à fonctionner avec les caractères étendus? J'ai un doute en lisant la doc.
Effectivement. J'ai fais un sizeof('é') qui m'a renvoyé 4, mais je me rend compte maintenant qu'il y a une tuile quelque part.
C'est simple, le code utf-8 de 'é' est C3A9 et les octets sont...
Au contraire, le code UTF-8 du 'é' est C3A9, donc c'est bien ça.
En revanche le ch2[14] a effectivement complètement foiré.
Mal grès mes recherches je n'ai pas avancé d'un pouce aujourd'hui.
Tu...
Si ça y est je viens de la trouver:
.cpp.o:
$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \...
Mon programme est actuellement composé de deux fichier .cpp et d'un fichier entête.
Pour la compilation, je passe par un IDE qui m'a généré un makefile de plus de 600 lignes et j'ai du mal à y...
Non. Ça sert à quoi et ça s'utilise comment?
edit: Enfin comme dit plus j'avais tenté le "locale loc("fr_FR") mais je sais pas trop l'utiliser, ni si c'est de ça dont tu parle.
Ok donc 'a' est codé sur 1 octet et 'é' sur 4.
Donc concrètement je dois procéder comment maintenant?
ofstream file("test.txt", ios::out);
string ch2 = "lettre accentué";
file << ch2 << endl;
file << ch2[14] << endl;
file.close();
Donne:
Système Linux en FR.UTF-8 avec compilateur GCC 4.2.2
J'ai tenté de "jouer" avec locale loc() mais sans succès.
En tout cas wstring ne change absolument rien:
wstring ch1 = L"lettre accentué";
string ch2 = "lettre accentué";
cout << ch2 << endl;
wcout << ch1 << endl;
cout << ch2[14] << endl;
wcout <<...
Effectivement j'ai consulté le man de isprint et c'est bien ça. Je vais donc modifier mon code.
Mais ça ne résout pas mon problème.
Pour le cours, a vrai dire je ne l'avais pas lu, je suis...
Excuse moi d'émettre un doute, mais j'ai trouvé cette fonction sur ce site qui semble avoir été écrit par un professeur en école d'ing.
D'après son cours cette fonction accepte les char en argument....
Pensez vous que passer data en wstring pourrait solutionner mon problème?
C'est ce que j' essayé mais le compilateur m'a alors rapporté une énorme liste d'erreur.
Et comme l'affichage de data en...
Ok, voilà d'où vient réellement mon problème:
cout << data << endl; //pour debug
for(int i=pos; i<data.size(); i++)
{
cout << data[i]; //pour debug
if( !isprint(data[i]) )
return 0;
}
Au temps pour moi. J'ai bien un problème avec les accents quelque part dans mon programme, et le fait que mon IDE n'affichait pas correctement la valeur de ma variable buffer, j'ai cru que la source...
Bonjour, je fais mes débuts en C++ et j'ai des difficultés à récupérer un texte accentué depuis un fichier.
Voici le code que je tente de faire fonctionner:
Ça fonctionne bien pour un texte...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.