[英]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.