2017-08-25 77 views
1

的十六進制值我有一些PHP代碼,需要俄羅斯的字符串,並將其轉換爲做十六進制以下:如何獲得俄羅斯的字符串在C++中

這將產生我找正確的輸出爲:

d0a4

我試圖重現這些結果在C++中,但沒有成功。這似乎是C++是返回的424十六進制值,如果我做這樣的事情:

char16_t strg(L"Ф"); 

wstring strg(L"Ф"); 

short strg(L'Ф'); 

請幫我在重現d0a4值C++。謝謝。

+0

你是如何做的轉換?你有沒有嘗試過使用[this](http://en.cppreference.com/w/cpp/locale/wstring_convert/to_bytes)? – NathanOliver

+0

對不起內森完全錯過了你的評論... – kvr

回答

0

試試這個

// 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