[英]How to convert ASCII char* to wchar_t* in C++ without using mbstowcs?
[英]How to setLocale when converting char* to wchar_t*?
我不會撒謊,我從https://stackoverflow.com/a/8032109/866333捏住了這段代碼:
std::wstring *GetWC(const char *c)
{
const size_t cSize = strlen(c)+1;
std::wstring wc( cSize, L'#' );
mbstowcs( &wc[0], c, cSize );
//wchar_t wc[cSize];
//mbstowcs (wc, c, cSize);
return wc;
}
我試圖確定是什么意思,例如:
記住在main中設置相關的語言環境。
例如,setlocale(LC_ALL,“”)。
以我為例,我從文件中讀取UTF-8(最初是ISO 8859-1,但那是破壞性的東西),我相信我所有的文字都是ISO 8859-1,因為這是我的語言環境,並且我有太多源文件無法輕松轉換在Windows中。 我的目標是Android。 我有點希望混合使用ISO 8859-1和UTF-8! 我必須轉換成一個嗎?
讓我說對了,我需要setLocale
來委托轉換例程嗎? 就像我讓他們拍拍一樣! 我熱衷於效率,但這似乎與可能的靜態全局變量搞混了嗎? 如果語言環境最初完全不同,那么這勢必會帶來副作用?
如果沒有setLocale
或mbstowcs
將使用https://stackoverflow.com/a/4826290/866333
wchar_t ws[100];
swprintf(ws, 100, L"%hs", "ansi string");
還有可能嗎? 我的libc手冊中看不到%hs。
setLocale
可以避免將完整的8位(ASCII / ISO-8859-1)轉換為多字節UTF-8,從而節省字符串操作?
很抱歉有這么多問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.