要么修改你的工程类型为非UNICODE,要么用编码转换函数WideCharToMultiByte或者相应宏T2A()

解决方案 »

  1.   


    不好意思,忘说了我是在编VC2005中的MFC application用到这些代码,能有什么方法可以安全地从CString转换为char*呢?
      

  2.   

    我试过从CString转换为string,然后再string::c_str(),但是没法成功转换成String,举个例子,
    1.String st=str.getString();
    2.String st(str)
    都提示不能从wchar_t*转换成string或是const char*;
    是不是我少了什么文件头?
      

  3.   

    VS2005默认unicode工程
    CString::GetBuffer();
    WideCharToMultiByte();
      

  4.   

    都提示不能从wchar_t*转换成string或是const char*; 
    是不是我少了什么文件头?
    wchar 是unicode的,两个字节;char是asci的,一个字节,同样字母a,在这两个里面编码(就是一个整数值)是不一样的,所以是不能直接转换的。
    楼上的人都说了,要么用编码转换函数WideCharToMultiByte或者相应宏T2A()都可以的。
    也就不要修改为非unicode的方式了,因为api都是unicode的,据说这样能提高一点性能;此外,会影响你别的很多关于字符串操作的。
      

  5.   

    阿,我改了工程属性为multi-byte就对了,谢谢IfChen和Mackz两位兄弟!不好意思我没有分,我是刚注册的。。万分感谢!
      

  6.   

    感谢jxufeng分析的这么详细,小弟受教了,以后工程一定注意得改成非unicode。