使用_snwprintf时,我会收到中文字符而不是英文。
wchar_t outfile[1024];
char const*outf = "test";
_snwprintf(outfile, 1024, L"%s.zip", outf);
_wfopen(outfile, L"wb");
文件名应该是" test"但是在输出文件中它是中文的。
当我尝试这样没有问题时,输出文件包含预期的英语:
_snwprintf(outfile, 1024, L"justtest.zip");
_wfopen(outfile, L"wb");
如何更正第一个代码块,以便在输出文件中正确显示文件名?
答案 0 :(得分:1)
wchar_t outfile[1024];
char const*outf = "test";
_snwprintf(outfile, 1024, L"%s.zip", outf);
_wfopen(outfile, L"wb");
outf
是ANSI(char
),但outfile
是UTF-16(wchar_t
),_snwprintf
期望wchar_t
。 Visual Studio 2015发出以下警告:
warning C4477: '_snwprintf' : format string '%s' requires an argument of type 'wchar_t *', but variadic argument 1 has type 'const char *'
您需要更改代码才能使用wchar_t
:
wchar_t outfile[1024];
const wchar_t* outf = L"test";
_snwprintf(outfile, 1024, L"%s.zip", outf);
wprintf(L"%s\n", outfile);