使用 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 个名称以区别于变量
我的目标是将 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 个名称以区别于变量