CString m; cin>>m;这样的语句为什么报错?
rrorC2679:二进制“>>”:没有找到接受“ATL::CString”类型的右操作数的运算符(或没有可接受的转换)1>d:\vs2005\vc\include\is...
rror C2679: 二进制“>>”: 没有找到接受“ATL::CString”类型的右操作数的运算符(或没有可接受的转换)
1> d:\vs2005\vc\include\istream(1137): 可能是“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\vs2005\vc\include\istream(1139): 或“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\vs2005\vc\include\istream(1141): 或“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
。
。
。
。
。
。
1> 试图匹配参数列表“(std::istream, ATL::CString)”时
1>生成日志保存在“file://e:\表类文件操作材料\文件\Debug\BuildLog.htm”
1>文件 - 1 个错误,1 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ========== 展开
1> d:\vs2005\vc\include\istream(1137): 可能是“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\vs2005\vc\include\istream(1139): 或“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> d:\vs2005\vc\include\istream(1141): 或“std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)”
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
。
。
。
。
。
。
1> 试图匹配参数列表“(std::istream, ATL::CString)”时
1>生成日志保存在“file://e:\表类文件操作材料\文件\Debug\BuildLog.htm”
1>文件 - 1 个错误,1 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ========== 展开
1个回答
展开全部
Cstring是ATL中的类,cin是STL里面的类对象,>>操作符的右操作数必须在STL的代码中进行定义或者自定义,显然STL里面不会有ATL中的类,所以你必须重载>>操作符对CString进行支持,或者采用中间变量转换,例如string s; cin>>s;CString m;m.Format("%s",s.c_str());
更多追问追答
追问
还是报错怎么办
error C2664: “void ATL::CStringT::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [3]”转换为“const wchar_t *
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
追答
我去!"const wchar_t" 你还使用unicode字符集,那你就用对应的wcin、wstring啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询