![](/img/trans.png)
[英]Confused about C++'s std::wstring, UTF-16, UTF-8 and displaying strings in a windows GUI
[英]C++ Using std::string functions for MBCS and std::wstring functions for UTF-16
有人處理過MBCS使用std :: string函數嗎? 例如,在CI中可以做到這一點:
p = _mbsrchr(path, '\\');
但是在C ++中,我正在這樣做:
found = path.find_last_of('\\');
如果跟蹤字節是斜杠,那么find_last_of會在跟蹤字節處停止嗎? 同樣對於std :: wstring的問題。
如果我需要將一個字符的所有字符替換為另一個字符,請用反斜杠說所有正斜杠,這樣做的正確方法是什么? 我是否需要檢查每個字符的前導代理字節,然后跳過跟蹤? 現在,我正在為每個wchar這樣做:
if( *i == L'/' )
*i = L'\\';
謝謝
編輯:正如David正確指出的那樣,在處理多字節代碼頁時還有更多需要處理的內容。 微軟表示使用_mbclen處理字節索引和MBCS。 在使用ANSI代碼頁時,似乎無法可靠地使用find_last_of。
您不需要對代理對做任何特別的事情。 代理對的一半的單個16位字符單元也不能是非代理字符單元。
所以,
if( *i == L'/' )
*i = L'\\';
是完全正確的。
同樣,您可以將find_last_of
與wstring
find_last_of
使用。
對於多字節ANSI代碼頁而言,它更為復雜。 您確實需要處理前導和尾部字節問題。 我的建議是,如果您確實需要處理多字節ANSI日期,請標准化為更合理的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.