VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 387|回复: 0

在Windows上使用_vscwprintf处理UTF-8编码的字符串时失败,该如何解决?

[复制链接]
79_avatar_middle
最佳答案
0 
donate_vip 发表于 2021-5-6 12:52:26 | 显示全部楼层 |阅读模式
本帖最后由 萌王 于 2021-5-6 15:24 编辑
  1. static std::wstring format_string(CONST WCHAR* pszText, ...)
  2. {
  3.     std::wstring result;
  4.     va_list args;
  5.     va_start(args, pszText);
  6.     int len = _vscwprintf(pszText, args);
  7.     if (len < 0)
  8.     {
  9.         wprintf_s(L"_vscwprintf failed, len=%i, error=%i\n", len, errno);
  10.         return L"";
  11.     }
  12.     result.resize((size_t)len);
  13.     vswprintf_s(const_cast<WCHAR*>(result.data()), result.size() + sizeof(WCHAR), pszText, args);
  14.     va_end(args);
  15.     return result;
  16. }

  17. int wmain(int argc, wchar_t* argv[])
  18. {
  19.     wprintf_s(L"%S\n", setlocale(LC_ALL, ".UTF8"));
  20.     std::wstring msg = format_string(L"msg: %hs", u8"abc你好");
  21.     wprintf_s(L"msg: %s\n", msg.c_str());
  22.     return 0;
  23. }
复制代码


输出:
Chinese (Simplified)_China.utf8
_vsctprintf failed, len=-1, error=0
msg:

操作系统:Windows 10 x64
编译器:VS2019
项目字符集:UNICODE

test_utf8.zip

4.71 KB, 下载次数: 0





上一篇:C语言数组练习题
下一篇:我用URLDownloadToFile下载,怎么没有成功啦
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-3-21 00:51

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表