我不会撒谎,我从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,从而节省字符串操作吗?
很抱歉有这么多问题。