首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CString到TCHAR

CString到TCHAR
EN

Stack Overflow用户
提问于 2012-08-09 16:16:41
回答 2查看 7.4K关注 0票数 1

在很长一段时间后的今天,我看到了这个转换:

代码语言:javascript
复制
void SomeFunction( LPCTSTR szText ) ...


CString str;
str.Format( "A Simple Sentence" );
SomeFunction( LPCTSTR( str ) );

编译正常。关于这个转换有什么解释吗?

这看起来很好,因为我不需要使用GetBuffer并在以后发布它,也不需要创建一个具有字符串长度的new LPTSTR

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-09 16:23:32

是的,这是可以的,因为CString有到LPCTSTR的转换操作符。reference to operator

msdn

C++编译器自动应用为将CString转换为LPCTSTR的CString类定义的转换函数。

因此,您不需要显式地使用转换为LPCTSTR

票数 2
EN

Stack Overflow用户

发布于 2012-08-09 16:23:03

是的,这样就可以了。根据documentation,您只需确保在返回指针期间不修改字符串,您的代码运行得很好。

这基本上是std::string::c_str()CString等价物。

通常,您不需要像代码那样显式地使用强制转换。我认为您需要这样做的唯一原因是您要转换为另一种类型,例如,如果SomeFunction被定义为

代码语言:javascript
复制
void SomeFunction(const std::basic_string<TCHAR>& str);

在这种情况下,不存在从CStringstd::basic_string<TCHAR>的隐式转换,因此需要使用LPCTSTR作为中间转换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11879292

复制
相关文章

相似问题

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