本文转自 <>

这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差。string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的;char*是从学习C语言开始就已经和我们形影不离的了,有许多API都是以char*作为参数输入的。所以熟练掌握三者之间的转换十分必要。

以下我用简单的图示指出三者之间的关系,并以标号对应转换的方法。

  1. string to CString

      CString.format("%s",string.c_str()); 
  2. CString to string

    string str(CString.GetBuffer(str.GetLength()));
  3. string to char *

    char *p=string.c_str();
  4. char * to string

    string str(char*);
  5. CString to char *

        strcpy(char,CString,sizeof(char));
  6. char * to CString

    CString.format("%s",char*);

*CString的format方法是非常好用的。**string的c_str()也是非常常用的,但要注意和char 转换时,要把char定义成为const char*,这样是最安全的。

以上函数UNICODE编码也没问题:unicode下照用,加个_T()宏就行了,像这样子_T(“%s”)

补充:

CString 可能是 CStringW/CStringA,在与 string 转换时,如果是 CStringW,还涉及编码转换问题。下面以 CStringA 来说明。

  1. string to CString

    CString.format("%s",string.c_str());
    
    CStringA = string.c_str() 就可以了
  2. CString to string

    string str(CString.GetBuffer(str.GetLength()));
    //GetBuffer 有参数的话,可能导致内部的分配空间动作,要进行后续 ReleaseBuffer 操作。
    string = CStringA
    string = CStringA.GetBuffer();
  3. string to char *

    char *p=string.c_str();
  4. char * to string

    string str(char*);
  5. CString to char *

    CString str1 ="123";
    char *t1 =str1.GetBuffer(str1.GetLength());
    str1.ReleaseBuffer();
  6. char * to CString

    CStringA = char * 就可以了

    参考:

    CString与char *互转总结

【转载】CString,string,char*之间的转换的更多相关文章

  1. CString,string,char*之间的转换(转)

    这三种类型各有各的优点,比如CString比较灵活,是基于MFC常用的类型,安全性也最高,但可移植性最差.string是使用STL时必不可少的类型,所以是做工程时必须熟练掌握的:char*是从学习C语 ...

  2. mfc CString,string,char* 之间的转换

    知识点: CString转char*,string string转char*,CString char* 转CString,string 一.CString转char*,string //字串转换测试 ...

  3. (转)CString,int,string,char*之间的转换

    CString,int,string,char*之间的转换http://www.cnblogs.com/greatverve/archive/2010/11/10/cstring-int-string ...

  4. MFC/C++/C中字符类型CString, int, string, char*之间的转换

    1 CString,int,string,char*之间的转换 string 转 CString CString.format("%s", string.c_str()); cha ...

  5. VC CString,int,string,char*之间的转换

    CString转string : CString strMfc = "test"; std::string strStr; strStr = strMfc.GetBuffer(); ...

  6. CString, QString, char*之间的转换(包括VC编译开关)

    传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd); const char* ch = (LPCTSTR)cstr; ch指向的地址和cstr相同. ...

  7. CString,string,char数组的转换

    来源:http://ticktick.blog.51cto.com/823160/317550 //----------------ANSI字符串转换为UNICODE字符串-------------- ...

  8. CString与 char *之间的转换

    http://www.cnblogs.com/watsonlong/archive/2011/04/15/2017086.html

  9. wchar_t char string wstring 之间的转换

    wchar_t char string wstring 之间的转换 转:http://blog.csdn.net/lbd2008/article/details/8333583 在处理中文时有时需要进 ...

随机推荐

  1. 修改jar包bug的方式

    第一种方式 1. 直接在项目同样的包名里面新建同样的class,会优先jar包的class加载,等同于覆盖. 第二种方式 2. 拿到第一步打包后的jar或者war,找到相应的java类的.class文 ...

  2. 数据库存储的数据(如果是<p>数据</p>或者<img src="" />等格式)(asp.net)

    1.用方法@Html.Raw() @Html.Raw(数据库提取的数据放在这里)

  3. em和rem的区别

    rem和em单位一样,都是一个相对单位,不同的是em是相对于元素的父元素的font-size进行计算,rem是相对于根元素html的font-size进行计算,这样一来rem就绕开了复杂的层级关系,实 ...

  4. Eclipse Action

    Interface IAction package org.eclipse.jface.action; import org.eclipse.core.commands.IHandlerAttribu ...

  5. IEnumerable<T> 用法

    //以下参考来自 http://www.cnblogs.com/wilber2013/p/4299529.html

  6. [Maven]Eclipse集成遇到的问题

    当maven项目导入到eclipse中后使用eclipse提供的maven命令执行任意一个出现 Exception in thread "main" java.lang.Unsup ...

  7. Spring Cloud学习路线

    学习本学习路线学习完,大家将会对微服务.Spring Cloud.Docker.Kubernetes有一个系统.全面的认识.通过学习,将能掌握相关的知识体系,并能够投入到项目实战中去. 本学习路线采用 ...

  8. React 环境搭建及页面调试方法

    React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...

  9. Properties的使用以及配置文件值的获取

    一.项目的部署如下,现在要获取SystemGlobals.properties中的值 二.代码如下: package com.util; import java.io.IOException; imp ...

  10. 百度开源项目插件 - Echarts 图表

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...