多字符集下CString string char* char[]之间相互转换

 在每次用到这些字符串转换的时候,总是记得不是很清楚,查找这些资料也总是浪费了很多时间,在此总结一下,方便以后使用。

准备工作:

    (1) 先将工程的字符集设置为多字节,否则会出现在字符拷贝时结尾为乱码。举个例子,

         CString  pathStr("abc");
         char       path[200];
         strcpy_s(path,   200,    (LPSTR)(LPCTSTR)pathStr); 

         将字符集设置为: Unicode 字符集   时, 运行结果为:

         

        将字符集设置为: 使用多字节字符集   时, 运行结果为:

        

        设置方法为:选择项目->项目属性(或直接按alt+F7->配置属性->常规

        参考文档:http://blog.163.com/ming__nan/blog/static/6783288200991111281852/

         

1.  其他类型转 CString

    转为 CString 类型比较简单,差不多一个Format() 函数就可搞定其它类型转换为 CString 类型。

    (1) String 转 CString

        CString.format("%s",string.c_str());  举个例子:

 

              CString pathStr("abc");
              std::stringtestStr("kkk");
              pathStr.Format("%s",testStr.c_str());

     运行结果为:

    

    例子2:

     CString cStr("abc");

     std::string testStr("kkk");
     cStr = testStr.c_str();
     testStr.assign("aaa");       // string 的变化不会影响 CString 

    运行结果为:

    

    (2) char* 转 CString

      CString.format("%s", char*); 举个例子:

     CString cStr("abc");
     char *pChar = "bbb";
     cStr.Format("%s", pChar);

    运行结果为:

    

    (3) char[] 转 CString

     CString.format("%s", char[]); 举个例子:

     CString cStr("abc");
     char charArray[200] = "ccc";
     cStr.Format("%s", charArray);

    运行结果为:

    

 

2. 其它类型转 string

   其它类型转 string 也很简单,一个 assign( ) 函数就可以搞定!

    (1) CString 转 string

     CString cStr("abc");
     string str("sss");
     str = cStr.GetBuffer(0);         // 此处也可以是 str.assign(cStr.GetBuffer(0));       或        str.assign(cStr);
     cStr.Format("%s", "yyy");         // CString 的变化不会影响 String

    运行结果:

    

    

    (2) char* 转 string

       可以在初始化的时候用char*来初始化string变量,也可以用assign()函数,举个例子:

     string str("sss");
     char *pChar = "bbb";
     str.assign(pChar);

    运行结果:

    

 

    (3) char[] 转 string

     string str("sss");
     char charArray[200] = "ccc";
     str.assign(charArray);

    运行结果:

    

 

3  其它类型转 char*

    其实就是获取其它类型指针的方法。

参考资料:

    (1) http://hi.baidu.com/the_sun_23/item/39f118cc8ea2d66da8ba9423

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值