如何将 va_list 传递给 wsprintfW()?
How do I pass va_list to wsprintfW()?
我正在尝试制作一个类似 printf 的自定义函数,它接受参数、格式,然后显示在 MessageBox 上,但是 wsprintfW 不能正常工作,它显示一些汉字,我认为编码在某处搞砸了,但我看不到哪里。如何解决?
代码:
void panic(const wchar_t *fmt, ...)
{
wchar_t buffer[1024];
va_list args = NULL;
va_start(args, fmt);
wsprintfW(buffer, fmt, args);
va_end(args);
MessageBoxW(NULL, buffer, L"error", MB_OK | MB_ICONERROR);
ExitProcess(EXIT_FAILURE);
}
电话来自:
panic(L"hello, %s!", L"michael");
return 错误:
您需要使用wvsprintfW
功能。 (注意函数名称中的“v”第二个字母。)
void panic(const wchar_t *fmt, ...)
{
wchar_t buffer[1024];
va_list args = NULL;
va_start(args, fmt);
wvsprintfW(buffer, fmt, args);
va_end(args);
MessageBoxW(NULL, buffer, L"error", MB_OK | MB_ICONERROR);
ExitProcess(EXIT_FAILURE);
}
我正在尝试制作一个类似 printf 的自定义函数,它接受参数、格式,然后显示在 MessageBox 上,但是 wsprintfW 不能正常工作,它显示一些汉字,我认为编码在某处搞砸了,但我看不到哪里。如何解决?
代码:
void panic(const wchar_t *fmt, ...)
{
wchar_t buffer[1024];
va_list args = NULL;
va_start(args, fmt);
wsprintfW(buffer, fmt, args);
va_end(args);
MessageBoxW(NULL, buffer, L"error", MB_OK | MB_ICONERROR);
ExitProcess(EXIT_FAILURE);
}
电话来自:
panic(L"hello, %s!", L"michael");
return 错误:
您需要使用wvsprintfW
功能。 (注意函数名称中的“v”第二个字母。)
void panic(const wchar_t *fmt, ...)
{
wchar_t buffer[1024];
va_list args = NULL;
va_start(args, fmt);
wvsprintfW(buffer, fmt, args);
va_end(args);
MessageBoxW(NULL, buffer, L"error", MB_OK | MB_ICONERROR);
ExitProcess(EXIT_FAILURE);
}