首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将std::string转换为LPTSTR?

如何将std::string转换为LPTSTR?
EN

Stack Overflow用户
提问于 2017-05-31 16:38:57
回答 2查看 7K关注 0票数 0

我想调用一个函数TEXT(),它接受一个LPTSTR类型的参数。我有std::string,我想把它转换成LPTSTR。我在网上搜索了一下,但是找不到我想要的东西,你能帮我吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-05-31 16:42:58

使用c_str()方法获取std::stringconst char *。如果它是ASCII,并且您的项目是Unicode (很可能是),那么您将需要从char *LPTSTR/LPWSTRMultiByteToWideChar转换。

票数 0
EN

Stack Overflow用户

发布于 2017-05-31 16:43:19

TEXT不是一个函数,而是一个宏,如果您为UNICODE构建,它会将字符串文字声明为宽字符串。因此,您不能将其用作将std::string转换为LPTSTR的函数。LPTSTR取决于它是否是UNICODE版本,它将是宽字符指针的常规字符指针。

如果不是为unicode构建,只需使用std::string::c_str()运算符:

代码语言:javascript
复制
MessageBox(0, str.c_str(), str.c_str(), 0);

如果你是为unicode构建的,你可以先把std::string转换成std::wstring,如果你的文本是纯ascii:

代码语言:javascript
复制
std::wstring wstr(str.begin(), str.end());
MessageBox(0, wstr.c_str(), wstr.c_str(), 0);

或者您可以使用CA2T ATL macro,然后代码将与unicode和非unicode构建一样好地工作。例如:

代码语言:javascript
复制
MessageBox(0, CA2T(str.c_str()), CA2T(str.c_str()), 0);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44279753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档