使用 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);

参数可以是普通字符串,但需要使用%S in MSVC and %ls in standard C

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

请注意,宏通常有 ALL_CAPS 个名称以区别于变量