如何获得俄罗斯的字符串在C++中
问题描述:
的十六进制值我有一些PHP代码,需要俄罗斯的字符串,并将其转换为做十六进制以下:如何获得俄罗斯的字符串在C++中
这将产生我找正确的输出为:
d0a4
我试图重现这些结果在C++中,但没有成功。这似乎是C++是返回的424十六进制值,如果我做这样的事情:
char16_t strg(L"Ф");
或
wstring strg(L"Ф");
或
short strg(L'Ф');
请帮我在重现d0a4
值C++。谢谢。
答
试试这个
// wide character data
std::wstring wstr = L"Ф";
// wide to UTF-8
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv1;
std::string u8str = conv1.to_bytes(wstr);
std::cout << "UTF-8 conversion produced " << u8str.size() << " bytes:\n";
hex_print(u8str);
// wide to UTF-16le
std::wstring_convert<std::codecvt_utf16<wchar_t, 0x10ffff, std::little_endian>> conv2;
std::string u16str = conv2.to_bytes(wstr);
std::cout << "UTF-16le conversion produced " << u16str.size() << " bytes:\n";
hex_print(u16str);
参考:http://en.cppreference.com/w/cpp/locale/wstring_convert/to_bytes
+0
谢谢,看起来像UTF-8部分产生正确的结果。 – ALec
你是如何做的转换?你有没有尝试过使用[this](http://en.cppreference.com/w/cpp/locale/wstring_convert/to_bytes)? – NathanOliver
对不起内森完全错过了你的评论... – kvr