static std::wstring format_string(CONST WCHAR* pszText, ...)
{
std::wstring result;
va_list args;
va_start(args, pszText);
int len = _vscwprintf(pszText, args);
if (len < 0)
{
wprintf_s(L"_vscwprintf failed, len=%i, error=%i\n", len, errno);
return L"";
}
result.resize((size_t)len);
vswprintf_s(const_cast<WCHAR*>(result.data()), result.size() + sizeof(WCHAR),
pszText, args);
va_end(args);
return result;
}
int wmain(int argc, wchar_t* argv[])
{
wprintf_s(L"%S\n", setlocale(LC_ALL, ".UTF8"));
std::wstring msg = format_string(L"msg: %hs", u8"abc 你好");
wprintf_s(L"msg: %s\n", msg.c_str());
return 0;
}
输出:
Chinese (Simplified)_China.utf8
_vsctprintf failed, len=-1, error=0
msg:
操作系统:Windows 10 x64
编译器:vs2019, mingw-w64-v8.1.0
项目字符集:UNICODE
项目文件:test_utf8.zip - 蓝奏云
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.