Salut à tous.
Comment fait-on pour convertir un string en wstring (ou un char* en wchar_t*) et inversément? Quitte à perdre des informations si c'est unicode vers ASCII.
Merci d'avance.
Salut à tous.
Comment fait-on pour convertir un string en wstring (ou un char* en wchar_t*) et inversément? Quitte à perdre des informations si c'est unicode vers ASCII.
Merci d'avance.
Quelqu'un avait donné ce code (je ne retrouve plus le post) :
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 #include <string> #include <locale> std::string narrow(const std::wstring& ws) { std::string res(ws); std::locale loc("english"); std::use_facet< std::ctype<wchar_t> >(loc).narrow(&ws[0], &ws[ws.length()], '?', &res[0]); return res; } std::wstring widen(const std::string& s) { std::wstring res(s); std::locale loc("english"); std::use_facet< std::ctype<wchar_t> >(loc).widen(&s[0], &s[s.length()], &res[0]); return res; }
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Si c'est juste de l'ASCII il suffit de copier les données.
Après si tu dis ASCII alors que c'est pas de l'ASCII mais un truc genre ISO-8859-1 c'est autre chose, bien entendu.
Sauf que tu as choisi pile le mauvais exemple, car pour l'ISO-8859-1, il suffit de recopier aussi (en non-signé, car l'octet fort doit être nul).![]()
En effet, les 256 premiers caractères unicode sont ceux de l'ISO-8859-1...
Enfin bien sûr, seules les vraies fonctions de conversion sont à utiliser (je viens de décrouvrir narrow/widen, mais on peut aussi utiliser les streams (mais j'ignore quelle locale est prise en compte)).Envoyé par [url=http://en.wikipedia.org/wiki/Basic_multilingual_plane]Wikipédia[/url]
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bon, pour clarifier: je parlais des classes "string" et "wstring". Et ce quelque puissent être leurs formats d'encodage respectifs, quelle que soit la plateforme.
Partager