win32项目中的C ++字符可视化

时间:2012-05-14 13:30:30

标签: c++ visual-c++ encoding character

在win32项目中进行可视化时我遇到了这个问题,如果我这样做的话:

char temp[80]="hello";

然后:

MessageBox(hDlg,(LPCWSTR)temp,_T("titolo"),MB_OK);

结果是日文字符,问题是什么? 感谢。

2 个答案:

答案 0 :(得分:3)

问题是LPCWSTR是一个宽字符数组,并且你有一个char数组。

尝试:

wchar_t temp[]= L"hello";

答案 1 :(得分:1)

Luchian为您提供了基本答案。

在我开始开发Windows应用程序的过去,我甚至不记得有一个Unicode版本的Windows。只有多字节字符串。当您使用Visual C ++向导创建新应用程序时,它创建了一个应用程序,其中基本字符串字符是“char”。在那里的某个时候,微软预见到Unicode是可行的方式,他们创建了名为TCHARLPTSTRLPCTSTR的类型。这些类型的编译方式不同,具体取决于您是否在项目中定义了“UNICODE”。如果您未定义UNICODE,则TCHAR = charLPTSTR = LPSTRLPCTSTR = LPCSTR。但是,如果您定义了UNICODE,则TCHAR = WCHAR(或wchar_t),LPTSTR = LPWSTR和LPCTSTR = LPCWSTR。< / p>

我正在开发的当前应用程序不是UNICODE应用程序,而是MBCS(多字节字符串)。在将来的某个时候,我希望它最终会改为UNICODE。我一直试图做的是使用TCHAR类型作为我的字符串,以便将来我所要做的就是定义UNICODE并且我的所有字符串功能都能正常工作。

话虽如此,如果您不知道是否已定义UNICODE,也可以使用TCHAR函数:

TCHAR temp[] = _T("hello");