我想调用函数TEXT(),它接受类型为LPTSTR的参数。我有std :: string,我想将其转换为LPTSTR。我在网上查了一下,但找不到我要找的东西,能帮忙吗? 感谢
答案 0 :(得分:0)
使用c_str()
方法获取const char *
的{{1}}。如果它是ASCII并且您的项目是Unicode(可能是),那么std::string
到MultiByteToWideChar
需要进行char *
转换。
答案 1 :(得分:-1)
TEXT
不是一个函数,而是一个宏,如果你为UNICODE构建,它会将字符串文字声明为宽字符串。因此,您无法将其用作将std :: string转换为LPTSTR
的函数。 LPTSTR
取决于它是否为UNICODE构建,或者是宽字符指针的常规字符指针。
如果您不为unicode构建,请使用std::string::c_str()
运算符:
MessageBox(0, str.c_str(), str.c_str(), 0);
如果您为unicode构建,如果您的文本是纯粹的ascii,您可以先将std :: string转换为std::wstring
:
std::wstring wstr(str.begin(), str.end());
MessageBox(0, wstr.c_str(), wstr.c_str(), 0);
或者您可以使用CA2T
ATL macro,然后代码将同样适用于unicode和非unicode构建。例如:
MessageBox(0, CA2T(str.c_str()), CA2T(str.c_str()), 0);