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. Dynamics CRM2015 Update1 新功能之表单增强功能

    CRM2015 Update 1发布后,系统的界面的变化很大,仔细观察后会发现表单窗体也有些不同了,在CRM2015 Update1的官方介绍中对此变化的解释是起用了新的窗体呈现引擎,让界面更好看加载 ...

  2. Dynamics CRM2015 The plug-in type does not exist in the specified assembly问题的解决方法

    在用插件工具PluginProfiler调试时,报"The plug-in type  xxxx  does not exist in the specified assembly" ...

  3. struts1.x mvc简单例程

    因为项目需要,需要使用struts1.x .因此学习下struts框架. 例程从struts 实现MVC框架入手,完成一次request请求. 一.前台 两个jsp文件 index.jsp: 只有一个 ...

  4. Android开发学习之路--数据持久化之初体验

    上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...

  5. Android程序崩溃异常收集框架

    最近在写Android程序崩溃异常处理,完成之后,稍加封装与大家分享. 我的思路是这样的,在程序崩溃之后,将异常信息保存到一个日志文件中,然后对该文件进行处理,比如发送到邮箱,或发送到服务器. 所以, ...

  6. Windows自删除程序和DLL

    Windows自删除程序和DLL 参照文章 http://blog.csdn.net/rxxi/article/details/741557 做了个自删除的程序SelfDelete.代码下载(我的FT ...

  7. 定制Maven原型生成项目

    1自定义原型 1.1创建原型项目 要定制自己的原型,首先就要创建原型项目来进行定制: mvnarchetype:create -DgroupId=com.cdai.arche -DartifactId ...

  8. python安装MySQLdb:在windows下或linux下(以及eclipse中pydev使用msqldb的配置方法)

    写的非常好,可以解决问题: windows下:http://blog.csdn.net/wklken/article/details/7253245 linux下:http://blog.csdn.n ...

  9. Zeroc Ice Slice语言使用 HelloWorld

    Slice介绍         为了开发多语言支持的RPC服务,需要一种中立的新语言来定义这个服务接口,以便各个编程语言能够准确无误地理解和翻译接口,为此Ice设计了Slice语言.Ice开发的第一步 ...

  10. volatile适用场合

    volatile适用场合 要在多线程中安全的适用volatitle变量,必须同时满足:        1.对变量的写入操作不依赖其当前值 不满足:number++.count = count * 5等 ...