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. 20 ViewPager Demo4自动轮播

    MainActivity.java 思想:才用非常大的数 让其看起来可以循环轮播图片并且用户可以从尽头滑到首图的特点 . package com.qf.day20_viewpager_demo4; i ...

  2. Android7.0 多窗口你值得拥有

    Android7.0 多窗口你值得拥有 什么是多窗口分屏? 多窗口分屏其实在国内并不陌生,已经有一些手机和平板搭载了"分屏多任务"和"APP窗口化"功能,但这些 ...

  3. Erlang 集群互连测试

    Erlang 集群互连测试Erlang节点相同cookie全互联成为一个集群(cluster).如果2个集群不同cookie, 然后其中有节点连接到对方集群的节点,这2个集群会合并成一个集群吗?连接到 ...

  4. (一一九)通过CALayer实现阴影、圆角、边框和3D变换

    在每个View上都有一个CALayer作为父图层,View的内容作为子层显示,通过layer的contents属性决定了要显示的内容,通过修改过layer的一些属性可以实现一些华丽的效果. [阴影和圆 ...

  5. [ExtJS5学习笔记]第十四节 Extjs5中data数据源store和datapanel学习

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/39031383 sencha官方API:http://docs.sencha.com/e ...

  6. Android项目开发填坑记-Fragment的onBackPressed

    Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...

  7. Activity和Window的View的移动的一些思考与体会,腾讯悬浮小火箭的实现策略

    Activity和Window的View的移动的一些思考与体会,腾讯悬浮小火箭的实现策略 事实上写这个也是因为自己实际在项目中用到了才会去研究已经写文章,对于View的移动,其实说实话,已经有很多文章 ...

  8. Ubuntu 安装 Mysql 5.6 数据库

    Ubuntu 安装 Mysql 5.6 数据库 1)下载: mysql-5.6.13-debian6.0-x86_64.deb http://dev.mysql.com/downloads/mirro ...

  9. TCP的定时器系列 — 零窗口探测定时器

    主要内容:零窗口探测定时器的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 出现以下情况时,TCP接收方的接收缓冲区将被塞满数据: 发送方的发送速 ...

  10. JSP编译成Servlet(四)JSP与Java行关系映射

    我们知道java虚拟机只认识class文件,要在虚拟机上运行就必须要遵守class文件格式,所以JSP编译成servlet后还需要进一步编译成class文件,但从JSP文件到java文件再到class ...