MFC中char*,string和CString之间的转换

一、    将CString类转换成char*(LPSTR)类型

方法一,使用强制转换。例如: 

CString theString( "This  is a test" ); 

LPTSTR lpsz =(LPTSTR)(LPCTSTR)theString; 

方法二,使用strcpy。例如: 

CString theString( "This  is a test" ); 

LPTSTR lpsz = new TCHAR[theString.GetLength()+1]; 

_tcscpy(lpsz, theString); 

方法三,使用CString::GetBuffer。例如: 

CString s(_T("This is a  test ")); 

LPTSTR p = s.GetBuffer(); 

// 在这里添加使用p的代码 

if(p != NULL) *p =  _T('\0'); 

s.ReleaseBuffer(); 

// 使用完后及时释放,以便能使用其它的CString成员函数

CString str = "ABCDEF"; 

char *pBuf = str,GetBuffer( 0 ); 

str.ReleaseBuffer();

二、     string转char*

string 是c++标准库里面其中一个,封装了对字符串的操作

把string转换为char* 有3种方法:

1。data(),返回没有”\0“的字符串数组 

如:

string str="abc";

char  *p=str.data();

2.c_str 返回有”\0“的字符串数组 

如:string  str="gdfd";

    char *p=str.c_str();

3 copy

比如

string  str="hello";

char p[40];

str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置

*(p+5)='\0';  //要手动加上结束符

cout < < p;

三、     字符串string转换为其它数据类型

temp="123456";

1)短整型(int)

i =  atoi(temp);

2)长整型(long)

l =  atol(temp);

3)浮点(double)

d =  atof(temp);

string s; d= atof(s.c_str());

4)BSTR变量

BSTR bstrValue =  ::SysAllocString(L"程序员");

...///完成对bstrValue的使用

SysFreeString(bstrValue);

5)CComBSTR变量

CComBSTR类型变量可以直接赋值

CComBSTR  bstrVar1("test");

CComBSTR bstrVar2(temp);

6)_bstr_t变量

_bstr_t类型的变量可以直接赋值

_bstr_t  bstrVar1("test");

_bstr_t bstrVar2(temp);

四、     Char*转换为string

如果要把一个char 转换成string, 可以使用 string s(char  *);

五、string 转CString  

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

六、char 转CString  

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

七、     CString -> string 

string  s(CString.GetBuffer());  

GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.

八、CString互转int

将字符转换为整数,可以使用atoi、_atoi64或atol。  

而将数字转换为CString变量,可以使用CString的Format函数。如  

CString s;  

int i =  64;  

s.Format("%d", i)

MFC中char*,string和CString之间的转换的更多相关文章

  1. C# 中List<T>与DataSet之间的转换

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  2. string和数值之间的转换

    string和数值之间的转换 to_string(val) 一组重载函数,返回数值val的string表示val可以是任何算数类型. stoi(s,p,b),stol(s,p,b),stoul(s,p ...

  3. String与StringBuffer之间的转换

    来源:http://www.oschina.net/code/snippet_2261089_47352 package demo; /* String与StringBuffer之间的转换 * Str ...

  4. 【转】Android中dip(dp)与px之间单位转换

    Android中dip(dp)与px之间单位转换 dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因 ...

  5. 【Java】【9】String Date Calendar之间的转换

    前言: 1, Calendar 转化 String 2, Calendar 转化 Date 3,Date 转化 String 4,Date 转化 Calendar 5,String 转化 Calend ...

  6. [java]转:String Date Calendar之间的转换

    String Date Calendar之间的转换 String Date Calendar  1.Calendar 转化 String Calendar calendat = Calendar.ge ...

  7. list,string,tuple,dictionary之间的转换

    list,string,tuple,dictionary之间的转换 类型 String List tuple dictionary String - list(str), str.split() tu ...

  8. shell 脚本文件十六进制转化为ascii码代码, Shell中ASCII值和字符之间的转换

    Shell中ASCII值和字符之间的转换     1.ASCII值转换为字符        方法一: i=97 echo $i | awk '{printf("%c", $1)}' ...

  9. C++ 中 int,char*,string,CString之间相互转换-整理

    <多字符集下> #include <string> //使用C++标准库的string类时, 定义时 std::string str; using namespace std; ...

随机推荐

  1. Solr 5.5.0 + tomcat 7.0.69 + zookeeper-3.4.6 Cloud部署

    Solr介绍:Solr是一个独立的企业级搜索应用服务器,Solr基于Lucene的全文搜索服务器,同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了 ...

  2. linux下字节对齐

    一,内存地址对齐的概念    计算机内存中排列.访问数据的一种方式,包含基本数据对齐和结构体数据对齐.    32位系统中,数据总线宽度为32,每次能够读取4字节数据.地址总线为32,最大寻址空间为4 ...

  3. mysql数据库连接池使用(二)实现自己的数据库连接池

    上一个章节,我们讲了xml文件的解析框架XMLConfiguration的使用,不懂的可以参考 Apache Commons Configuration读取xml配置具体使用. 这个章节主要实现自己的 ...

  4. ROS_Kinetic_25 在ubuntu16.04使用Leap_motion并作为手势输入控制Gazebo中的机器人

    ROS_Kinetic_25 在ubuntu16.04使用Leap_motion并作为手势输入控制Gazebo中的机器人 先附上资料网址: 1.  https://developer.leapmoti ...

  5. 百度地图隐藏缩放控件比例尺Logo

    对于百度地图最新版V3.7.3,以前的隐藏控件方法失效,可用以下方法隐藏: 1.隐藏缩放控件: mMapView.showZoomControls(false); 2.隐藏比例尺: mMapView. ...

  6. (一〇六)iPad开发之UIPopoverController的使用

    很多App里都有一种点击显示的悬浮气泡菜单,例如下图: 在iPad上可以使用UIPopoverController实现这个功能,popoverController继承自NSObject而不是UIVie ...

  7. 【java虚拟机系列】java中类与对象的加载顺序

    首先了解一下Java虚拟机初始化的原理. JVM通过加装.连接和初始化一个Java类型,使该类型可以被正在运行的Java程序所使用.类型的生命周期如下图所示: 装载和连接必须在初始化之前就要完成. 类 ...

  8. SQLServer导出数据到MySQL

    1从SQLServer导出数据 执行BCP: bcp "..." queryout "F:\test.txt" -c –S1.2.3.4 -Usa -P1111 ...

  9. 如何在Cocos2D 1.0 中掩饰一个精灵(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 让我们开始吧 打开Xcode,从New Project中选择co ...

  10. Android进阶(四)一个APP引发的思索之ArrayList的add总是添加相同的值

    解决"ArrayList的add总是添加相同的值"问题 前言 最近在写一个小的Android APP,在用ArrayList的add时,总是出现添加相同值的现象.如下图所示: 错误 ...