[英]UTF8 char array to std::wstring
我只是想獲取x11窗口標題,並將其存儲在std :: wstring中。 我用這樣的命令來獲得標題
auto req_title = xcb_get_property(conn, 0, window, XCB_ATOM_WM_NAME, XCB_GET_PROPERTY_TYPE_ANY, 0, 100);
auto res_title = xcb_get_property_reply(conn, req_title, nullptr);
之后,我可以將標題存儲在char數組中。 如何將該數組轉換為wstring?
您可以使用std::wstring_convert
將string
轉換為wstring
或從wstring
轉換為string
,並使用codecvt
指定要執行的轉換。
使用示例:
string so=u8"Jérôme Ângle";
wstring st;
wstring_convert<std::codecvt_utf8<wchar_t>,wchar_t> converter;
st = converter.from_bytes(so);
如果您有一個c字符串(char數組),那么from_bytes()
的重載將完全滿足您的要求:
char p[]=u8"Jérôme Ângle";
wstring ws = converter.from_bytes(p);
正如評論中指出的那樣, C ++ 17已棄用了 codecvt
和wstring_convert
實用程序:
這些功能很難正確使用,並且懷疑它們是否正確指定。 用戶應改用專用的文本處理庫。
另外, wstring
基於wchar_t
,在Linux系統和Windows系統上, wchar_t
編碼有很大不同。
因此,第一個問題是要問為什么根本需要一個wstring
,以及為什么不只在各處保留utf-8 。
根據原因,您可以考慮使用:
UnicodeString
提供全面,深入的Unicode支持 to_utf
或utf_to_utf
,用於常見的與Unicode相關的任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.