繁体   English   中英

使用 sprintf_s 从 int 转换为宽字符串

[英]Converting from int to wide character string using sprintf_s

我的目标是将int转换为宽字符串并用另一个宽字符串作为前缀。 我目前的解决方案是这样的:

#define bufsize 20
char buffer[bufsize];
sprintf_s(buffer,bufsize,"%s%d", "my prefix", 42);
wchar_t wbuffer[bufsize];
mbstowcs_s(NULL, wbuffer, buffer, bufsize);

我错误地期望以下内容会起作用:

#define bufsize 20
wchar_t buffer[bufsize];
swprintf_s(buffer,bufsize,"%s%d",L"my prefix",  42);

我的解决方案有更简洁的版本吗? 我必须将int转换为char[] ,然后转换为wchar_t[] ,这似乎是错误的。 为什么我不能从int转换为wchar_t*

您需要格式字符串的 L 前缀

swprintf_s(buffer, bufsize, L"%s%d", L"my prefix",  42);

然而,参数可以是普通字符串,但您需要在 MSVC 中使用%S ,在标准 C 中使用%ls

swprintf_s(buffer, bufsize, L"%S%d", "my prefix",  42);

请注意,宏通常具有 ALL_CAPS 名称以将它们与变量区分开来

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM