CString string和char*之间的相互转换

string CString char之间的相互转换与项目工程字符集的设置相关

字符集分为 Unicode字符集 和 多字节字符集

其中 VS2005下默认为Unicode字符集  VC6.0默认为多字节字符集

        VS2005下字符集设置在项目->属性->配置属性->字符集目录下

 

1.CString与char*之间的转换

    a. Unicode字符集下的转换

        //CString -> char*

        CSting strCS="Hellp World!";

        char *strC;

        USES_CONVERSION;

        strC=T2A(strCS);

        PS:strC应该开辟了新内存,strCS值改变时strC的值不变,是否安全应再考虑

 

        //char* -> CString

        char* strC;

        CString strCS;

        USES_CONVERSION;

        strCS=A2T(strC);

 

    b. 多字节字符集下的转换

        //CString -> char*

        CSting strCS="Hellp World!";

        char *strC;

        strC=strCS.GetBuffer(strCS.GetLength());

        PS:strCS值改变时strC的值改变,当strCS修改后的字符串长度大于修改前时,strC的值会出错

 

        //char* -> CString

        char* strC;

        CString strCS;

        strCS=strC;

 

2. String与CString之间的转换

    a. Unicode字符集下的转换

        //CString -> string

        CSting strCS="Hellp World!";

        string strS;

        USES_CONVERSION;

        strS=T2A(strCS);

 

        //string -> CString

        string strS("Hellp World!");

        CString strCS;

        strCS=strS.c_str();

        PS:strS值改变时strCS的值不变

 

    b. 多字符集下转换

        //CString -> string

        CSting strCS="Hellp World!";

        string strS;

        strS=strCS.GetBuffer(0);

        PS:strCS值改变时strS的值不变

 

        //string -> CString

        string strS("Hellp World!");

        CString strCS;

        strCS=strS.c_str();

        //或采用如下方式

        strCS.Format("%s",strS.c_str());

 

    3. string和char*之间的转换

        在单字符集和多字符集下string和char*之间的转换没有区别

        //string -> char*

        string strS("Hellp World!");

        const char* strC=strS.c_str();

        PS:未给strC开辟内存,只将字符串的指针临时赋给了strC,因此当strS值改变时strC的值会改变

 

        char strC[100];

        strcpy(strC,strS.c_str());

        PS:strS值改变时strC的值不会改变

 

        //char* -> string

        char* strC;

        string strS(strC);

posted on 2013-05-04 07:33  世上清泉  阅读(158)  评论(0)    收藏  举报

导航