我有一个问题,比如:
Ex: MessageBoxW(0,L“ĐâylàABC(这是ABC)”,L“Lỗi(错误)”,0);
一切都好! 但我想将ABC替换为变量,如下所示: char buff [500]; char author [] =“ABC”; sprintf_s(buff,“Đâylà%s(这是%s)”,作者); MessageBoxW(0,什么会在这里,L“Lỗi(错误)”,0);
我希望有人可以提供帮助!
答案 0 :(得分:1)
您当然可以显示变量,但必须是正确的类型。 MessageBoxW采用LPCWSTR
(宽),char[]
提供LPCSTR
(窄)。因此,相应地更换类型:
WCHAR buff[500]; // WCHAR not char
WCHAR author[] = L"ABC"; // WCHAR not char
swprintf_s(buff, L"Đây là %s (This is %s)", author); // swprintf_s not sprintf_s
MessageBoxW(0, buff, L"Lỗi (Error)", 0);
避免使用原始缓冲区并使用诸如ATL::CStringW
或std::wstring
之类的包装类也是一个好主意。
(我在决定是否回答此问题时遇到了一些麻烦。相关问题Why can't I display this string on MessageBox?似乎是重复的,但它已被关闭为Cannot convert parameter from 'const char[20]' to 'LPCWSTR'的副本,但没有回答这个问题。实际上它的答案包含在这个问题中。)