\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>        没有使该转换得以执行的上下文谢谢

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

    把工程的字符集改成Unicode后,出现了其他问题,而且更多啊
      

  7.   

    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 已跳过 ==========
      

  8.   

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

  9.   

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