我试图获得格式为int
的wchar_t*
作为参数。我谷歌搜索了很多,但我只是结束了更多的困惑。所以,考虑下面的代码:使用wsprintf将int转换为wchar_t *
int main(int argc, char** argv) {
wchar_t buf[16];
wsprintf(buf, L"%d", 5);
wprintf(L"[%ls]\n", buf);
system("pause");
return 0;
};
已经假定wchar_t
,wsprintf
和wprintf
分别是char
,sprintf
和printf
宽字符等效,我希望上面的打印[5]
,但它[
和]
之间的打印无用。什么是达到预期结果的正确方法?我在这里误解了什么?
(我要澄清的是便携性比这里安全更重要,所以我想知道使用这个家庭的功能,而不是更安全的特定供应商的扩展的解决方案。)
你怎么知道它是印刷垃圾?你是否将输出传送到一个文件中并在十六进制编辑器中查看它? –
不,我认为'wprintf'会以预期的方式将它打印到控制台。不知何故,这是不正确的? –
对于我(Mac OS X 10.7.5),'wsprintf()'不可用,但是'swprintf()'按预期打印'[5]'。 – 2013-01-05 15:21:20