加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MFC中 CString 转换成string

(2012-07-09 10:34:50)
标签:

杂谈

分类: 我的东东

MFC中 CString 转换成string

 

今天编译Opencv程序时出现了这个错误

 error C2440: “初始化”: 无法从“CString”转换为“std::basic_string<_Elem,_Traits,_Ax>”
1>          with
1>          [
1>              _Elem=char,
1>              _Traits=std::char_traits<char>,
1>              _Ax=std::allocator<char>
1>          ]
1>          无构造函数可以接受源类型,或构造函数重载决策不明确

解决方法以下三种

第一种方法:先利用CString类提供的operator LPCTSTR转换函数将CString对象转换为一个C风格字符串,然后再转换成string类型,例如:
std::basic_string<TCHAR> filename((LPCTSTR) file1);
第二种方法:
std::basic_string<TCHAR> filename(file1.GetBuffer(file1.GetLength()));
其实前两种方法的关键就是str::basic_string<TCHAR>。
第三种方法:这种方法也是我刚从网上找的,在VS2008的MFC的工程中编译通过,在别的地方调试可能要添加相关的头文件,CT2A 它定义在"atlconv.h"中。
CT2A xx(file1);
filename = xx;
以上三种方法我在VS2010种全部编译通过。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有