看看我的代码哪里有错误

来源:百度知道 编辑:UC知道 时间:2024/06/20 22:51:11
char Scorestr[10]="\0";
MessageBox((LPCTSTR)itoa(Score,Scorestr,10));
总是显示乱码 Score是整型的
wchar_t Scorestr[10];
MessageBox((LPCTSTR)_itow(Score,Scorestr,10));
我在群里有人这样帮我改了 结果出来不是乱码
wchar_t是什么类型?为什么用char不行?
wchar_t和char有什么区别?

你的问题是由于使用不同字符集造成的。经测试,这个在vc6下默认ascii码没什么问题,能正常显示。在vs2005和2008下unicode码肯定是不行的(vs2002没用过不知道)。解决方法有二
1、改用vc6(不推荐)
2、改变编码风格。定义字符串养成定义宽字符串的习惯,和用宽字符函数。对应你的代码应用宽字符集如下。
WCHAR Scorestr[10]=L"\0";
int Score =100;
_itow(Score,Scorestr,10);
MessageBox((Scorestr));

vs2008下测试显示正常。

WCHAR 是vc定义的宏,和c++关键字wchar_t一样,是定义unicode字符。char占1个字节,unicode字符(还是4个?反正比char大)占2个字节,以你的强制方式转换肯定不能正常显示了。unicode字符定义的时候前面加L"字符串",或_T("字符串")。形成习惯就好了,使用unicode码是大势所趋。

从这几句看来,应该是没有什么问题。
你把数组的范围扩大一下试试。

WinApi中MessageBox是如下的定义:
int MessageBox(
HWND hWnd, // handle to owner window
LPCTSTR lpText, // text in message box
LPCTSTR lpCaption, // message box title
UINT uType // message box style
);

例子可以是MessageBox(NULL,Scorestr,NULL,MB_OK);
你的说实话看不懂