您的位置:首页 > 其它

关于“不能将参数1 从“CString”转换为“const char *””的一些思考

2011-10-02 11:54 656 查看
MFC开发时经常会遇到CString、string/std::string、char*等类型相互转换的问题,现将一些思考与心得记下来与大家分享:

①CString强制类型转换为const char*,在变量前加上:(char *)(LPCTSTR),这样做虽不会报错,但其转换后的值可能是乱码,不推荐这样做!

②利用中间变量(string类型),原理:

1)CString类型不能自动装换为const char*。

2)const char*类型可自动装换为CString。

3)std::string类型调用c_str()方法就可轻松转换为const char*。

4)CString与std::string相互转换:

CString cs("Hello");

std::string s((LPCTSTR)cs);

std::string s("Hello");
CString cs(s.c_str());

综上,所以一般需要const char*类型时可用string变量转换,而需要CString类型时则直接用const char*类型赋值。应尽量避免CString转换为const char *的情况!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐