这个编译错误怎么改啊

时间:2020-11-24 09:27:35
\StdAfx.cpp(93) : error C2664: “int ATL::CStringT<BaseType,StringTraits>::Replace(char,char)”: 不能将参数 1 从“const wchar_t [2]”转换为“char”
1>        with
1>        [
1>            BaseType=char,
1>            StringTraits=StrTraitMFC_DLL<char>
1>        ]
1>        没有使该转换得以执行的上下文



谢谢

18 个解决方案

#1


调用 WideCharToMultiByte 先将宽字符转化一下即可!

#2


参数传错了。。。。
用楼上的方法试试!!!!!

#3


Replace那行代码贴出来看下

#4


在属性中将character set改为多字节,别用unicode试试看

#5


修改字符集

#6


直接用CStringW

#7


字符集要一致

#8


用CStringA

#9


你把使用的代码贴出来!
不过从你贴出的错误现象,应该就是参数类型错误问题,CStringT原型要求的是char,你就想办法转换成这个类型!

#10


CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
附上代码

#11


直接用CStringW 或者修改工程的字符集为 Unicode

#12


引用 11 楼 buyong 的回复:
直接用CStringW 或者修改工程的字符集为 Unicode
把工程的字符集改成Unicode后,出现了其他问题,而且更多啊

#13


1>------ 已启动全部重新生成: 项目: Addtest, 配置: Debug Win32 ------
1>正在删除项目“Addtest”(配置“Debug|Win32”)的中间文件和输出文件
1>正在编译...
1>stdafx.cpp
1>正在编译...
1>Addtest.cpp
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(79) : error C2664: “GetModuleFileNameW”: 不能将参数 2 从“char [260]”转换为“LPWCH”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(82) : error C2440: “初始化”: 无法从“const char [8]”转换为“ATL::CStringT<BaseType,StringTraits>”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(84) : error C2664: “GetShortPathNameW”: 不能将参数 1 从“char [260]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(87) : error C2664: “RegOpenKeyExW”: 不能将参数 2 从“const char [46]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(99) : error C2664: “RegSetValueExW”: 不能将参数 2 从“const char [24]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(114) : error C2440: “初始化”: 无法从“const char [8]”转换为“ATL::CStringT<BaseType,StringTraits>”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1r_t>
1>        ]
ts=StrTraitMFC_DLL<wchar_t>
1>        ]
1
1>

1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [11], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(324) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>   
1aitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2346): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(char,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [14], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(336) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>  ,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1> 
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
tringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [7], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(356) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>    
1>        ]

1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2307): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]

1>正在生成代码...
1>生成日志保存在“file://d:\My Documents\Visual Studio 2005\Projects\Addtest\Addtest\Debug\BuildLog.htm”
1>Addtest - 44 个错误,0 个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

#14


引用 1 楼 fandh 的回复:
调用 WideCharToMultiByte 先将宽字符转化一下即可!
怎么转化哦,不会用哦

#15


CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
这里为什么必须是宽字符,如果就是s.Replace("'", "''");行不行?
字符集就别改了

#16


因为s已经默认成宽字符了,所以它的参数也要一致

#17


引用 15 楼 buyong 的回复:
CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
这里为什么必须是宽字符,如果就是s.Replace("'", "''");行不行?
字符集就别改了
不加L ,编译没出错。不过我记得前几次不加L 编译都出错了

#18


在属性中将character set改为多字节,别用unicode试试看

#1


调用 WideCharToMultiByte 先将宽字符转化一下即可!

#2


参数传错了。。。。
用楼上的方法试试!!!!!

#3


Replace那行代码贴出来看下

#4


在属性中将character set改为多字节,别用unicode试试看

#5


修改字符集

#6


直接用CStringW

#7


字符集要一致

#8


用CStringA

#9


你把使用的代码贴出来!
不过从你贴出的错误现象,应该就是参数类型错误问题,CStringT原型要求的是char,你就想办法转换成这个类型!

#10


CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
附上代码

#11


直接用CStringW 或者修改工程的字符集为 Unicode

#12


引用 11 楼 buyong 的回复:
直接用CStringW 或者修改工程的字符集为 Unicode
把工程的字符集改成Unicode后,出现了其他问题,而且更多啊

#13


1>------ 已启动全部重新生成: 项目: Addtest, 配置: Debug Win32 ------
1>正在删除项目“Addtest”(配置“Debug|Win32”)的中间文件和输出文件
1>正在编译...
1>stdafx.cpp
1>正在编译...
1>Addtest.cpp
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(79) : error C2664: “GetModuleFileNameW”: 不能将参数 2 从“char [260]”转换为“LPWCH”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(82) : error C2440: “初始化”: 无法从“const char [8]”转换为“ATL::CStringT<BaseType,StringTraits>”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(84) : error C2664: “GetShortPathNameW”: 不能将参数 1 从“char [260]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(87) : error C2664: “RegOpenKeyExW”: 不能将参数 2 从“const char [46]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(99) : error C2664: “RegSetValueExW”: 不能将参数 2 从“const char [24]”转换为“LPCWSTR”
1>        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\my documents\visual studio 2005\projects\addtest\addtest\addtest.cpp(114) : error C2440: “初始化”: 无法从“const char [8]”转换为“ATL::CStringT<BaseType,StringTraits>”
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1r_t>
1>        ]
ts=StrTraitMFC_DLL<wchar_t>
1>        ]
1
1>

1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [11], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(324) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>   
1aitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2346): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(char,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [14], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(336) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>  ,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1> 
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(677): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const wchar_t *)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(688): 或“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const wchar_t *,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            t_bMFCDLL=true
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2289): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
tringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(139): 或“_bstr_t operator +(const char *,const _bstr_t &)”
1>        d:\program files\microsoft visual studio 8\vc\include\comutil.h(140): 或“_bstr_t operator +(const wchar_t *,const _bstr_t &)”
1>        试图匹配参数列表“(const char [7], CString)”时
1>d:\my documents\visual studio 2005\projects\addtest\addtest\outlookbutton.cpp(356) : error C2678: 二进制“+”: 没有找到接受“const char [10]”类型的左操作数的运算符(或没有可接受的转换)
1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\atlsimpstr.h(666): 可能是“ATL::CSimpleStringT<BaseType,t_bMFCDLL> ATL::CSimpleStringT<BaseType,t_bMFCDLL>::operator +(const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &,const ATL::CSimpleStringT<BaseType,t_bMFCDLL> &)”[通过使用参数相关的查找找到]
1>        with
1>    
1>        ]

1>        d:\program files\microsoft visual studio 8\vc\atlmfc\include\cstringt.h(2307): 或“ATL::CStringT<BaseType,StringTraits> ATL::CStringT<BaseType,StringTraits>::operator +(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &)”[使用参数相关的查找找到]
1>        with
1>        [
1>            BaseType=wchar_t,
1>            StringTraits=StrTraitMFC_DLL<wchar_t>
1>        ]

1>正在生成代码...
1>生成日志保存在“file://d:\My Documents\Visual Studio 2005\Projects\Addtest\Addtest\Debug\BuildLog.htm”
1>Addtest - 44 个错误,0 个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

#14


引用 1 楼 fandh 的回复:
调用 WideCharToMultiByte 先将宽字符转化一下即可!
怎么转化哦,不会用哦

#15


CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
这里为什么必须是宽字符,如果就是s.Replace("'", "''");行不行?
字符集就别改了

#16


因为s已经默认成宽字符了,所以它的参数也要一致

#17


引用 15 楼 buyong 的回复:
CString EscapeSQLString(CString s) {
s.Replace(L"'", L"''");
return s;
}
这里为什么必须是宽字符,如果就是s.Replace("'", "''");行不行?
字符集就别改了
不加L ,编译没出错。不过我记得前几次不加L 编译都出错了

#18


在属性中将character set改为多字节,别用unicode试试看

#19