Bonjour,
Je suis nouveau en c++, et j'ai un sérieux problème ! Je souhaite ouvrir un fichier de texte comprenant sur chaque ligne un mot, et certains mots ont des caractères spéciaux.
Avant de vous consulter, j'ai consulté la faq, et j'ai vu ce code permettant de passer de l'ASCII a l'Unicode, en convertissant un string en wstring
Mais cela ne fonctionne pas, il n'y a pas de problème de compilation, je lance le code suivant:
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
21
22 #include <string> #include <locale> #include <vector> std::string narrow(const std::wstring& ws) { std::vector<char> buffer(ws.size()); std::locale loc("english"); std::use_facet< std::ctype<wchar_t> >(loc).narrow(ws.data(), ws.data() + ws.size(), '?', &buffer[0]); return std::string(&buffer[0], buffer.size()); } std::wstring widen(const std::string& s) { std::vector<wchar_t> buffer(s.size()); std::locale loc("english"); std::use_facet< std::ctype<wchar_t> >(loc).widen(s.data(), s.data() + s.size(), &buffer[0]); return std::wstring(&buffer[0], buffer.size()); }
mais en sortie je reçois dans la console :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 std::string chaine = "é"; std::wstring chaine2 = widen(chaine);
Voilà, je n'y connais pas grand chose, j'aimerais savoir si vous pourriez me dépanner ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Abandon (core dumped)
En tout cas, merci à ceux qui auront pris la peine de lire, et plus encore à ceux qui auront répondu.
Partager