c ++变量声明语法

时间:2013-08-28 18:05:14

标签: c++

当我采取这样简单的事情时:

char text1[] = "hello world";
MessageBox(NULL, text1, NULL, NULL);

我收到此错误:

Error   1   error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [12]' to 'LPCWSTR'   

4 个答案:

答案 0 :(得分:4)

你有两个基本问题。首先,char只能容纳一个字符,而不能包含一串字符。其次,你有一个“窄”字符串文字,但你(显然)使用你的应用程序的Unicode版本,其中MessageBox期望接收宽字符串。你想要:

wchar_t text1[] = L"hello world";

或:

wchar_t const *text1 = L"hello world";

或(最常见):

std::wstring text1(L"hello world");

...但请注意,std::wstring无法直接传递给Messagebox。当你致电text1.c_str()时,你需要通过MessageBox,或者为MessageBox写一个接受(引用)std::wstring的小包装器,例如:

void message_box(std::wstring const &msg) {
     MessageBox(NULL, msg.c_str(), NULL, MB_OK);
}

答案 1 :(得分:0)

charsingle character,而不是字符串。

您需要Unicode,您可以使用TCHAR;

TCHAR[] text = _T("Hello World.");
MessageBox(NULL, text, NULL, NULL);

答案 2 :(得分:0)

C / C ++中的字符串文字不是char,而是char值的集合。声明这一点的惯用方法是

const char* text1 = "hello world";

答案 3 :(得分:0)

char只能容纳一个字符,而不是一个字符数组。

所以只需使用指向常量Unicode字符串的指针。

LPCWSTR text1 = L"hello world";