2010-04-20 4 views
1

j'ai une chaîne de wchar_t, par exemple, L "hao123-- 我 的 上网 主页", je peux le convertir en UTF8UTF8 et conversion utf16

encodage, la chaîne de sortie est « hao123 锛 嶏 紞 鎴 戠"涓 婄 綉 涓 婚>", mais enfin, je dois écrire ceci

chaîne dans un fichier texte, son format est utf16 (je le sais par d'autres), "hao123 \ uFF0D \ uFF0D \ u6211 \ u7684 \ u4E0A \ U7F51 \ E4E3B \ u9875 ".

Parce que je dois enregistrer en C++ chaîne std puis l'écrire dans un fichier, Comment puis-je convertir

"hao123 锛 嶏 紞 鎴 戠 殑 涓 婄 綉 涓 婚>" à « hao123 \ uFF0D \ uFF0D \ u6211 \ u7684 \ u4E0A \ u7F51 \ u4E3B \ u9875 "dans char ou chaîne std C++?

Quelqu'un peut-il me donner quelques conseils?

Merci d'avance!

+0

Quelle langue de programmation utilisez-vous pour cela? – Oded

+0

C++. Aucun conseil? Merci! – Dan

+0

Enfin, j'ai écrit une fonction de conversion par moi-même. Merci Oded. – Dan

Répondre

3

En C++ 11 cela peut être fait avec:

#include <locale> 
#include <codecvt> 
#include <string> 
#include <iostream> 

int main() 
{ 
    std::wstring_convert<std::codecvt_utf16<wchar_t> > myconv; 
    std::wstring ws(L"hao123--\x6211\x7684\x4E0A\x7F51\x4E3B\x9875"); 
    std::string bs = myconv.to_bytes(ws); 
    std::cout << bs << '\n'; 
}