CString、string、char []、char *

CString、string、char []、char *

说明:这个也是我百度总结的一点点。如果有错误希望大家评论区指出来,以便及时修改,以免误导他人。谢谢

CString:

     CString对象可以被认为是字符数组.。将CString看作实际的字符串,而不是指向字符串的指针。CString位于头文件afx.h中,一般用于MFC工程。包含了C风格字符串(NULL即'\0'结尾字符串)相关的一些类型和函数的声明,例如strcmp()、strchr()、strstr()等。CString是MFC中定义的字符串类,MFC中很多类及函数都是以CString为参数的,另外CString类重载了(LPCSTR)运算符,所以如果你在MFC下面使用CString类,就可以直接用CString类做为参数来调用需要一个C语言风格字符串的win   api函数,编译器会自动调用(LPCSTR)成员函数完成从CString到一个C风格字符串的转换。如果你在MFC下使用C++语言中标准的 string类,那么在调用需要C语言风格的字符串为参数的win   api时,你必须显示调用sting.c_str()成员函数,来完成同样的转换。

string:

     string可以被看成是以字符为元素的一种容器。string位于C++标准库头文件,string是c++语言中string类模板的申明。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。string不一定以NULL(‘\0’)结束。string长度可以根据length()得到,string可以根据下标访问。不能将string直接赋值给char *。

char []:

     char []直接是字符串的地址,直接访问。char s[10]=“Hello world!”的内容是可以改的。因为s[]是在运行时刻赋值的,他只是个存储的工具,编译器编译时并不知道它里面是什么。char []可以根据下标访问。长度可以用strlen()函数计算而得。以NULL(‘\0’)结束。

char *:

     char *是一个指针,可以指向一个字符串数组,至于这个数组可以在栈上分配,也可以在堆上分配。内存管理由用户自己处理,很容易出现内存不足的问题。char *s=“Hello world!”的内容是不可以改的。因为s是在编译时刻就确定的。编译器在编译时就已经知道s指向的是常量

 

 

 

CString与string相互转换

 

CString转string

CString strMfc = "test";

std::string strStr;

strStr = strMfc.GetBuffer(0);

 

string转CString

CString strMfc;

string strStr = "test";

strMfc = strStr.c_str();

 

CString与char型数组相互转换

 

CString转char []

char str[100];

LPSTR p;

CString cstr="hello";

p=cstr.getbuffer();

strcpy(str,p);

 

char []转CString

char str[]="hello";

CString cstr;

cstr.Format(str);

 

string与char型数组相互转换

 

string转char []

char buf[10];

string str("ABCDEFG");

strcpy(buf, str.c_str());//strncpy(buf, str.c_str(), 10);

 

char [] 转string

char ch [] = "ABCDEFG";

string str;

str = ch;

 

string与char *相互转换

 

string转char *

string s = "hello";

char *p;

p = s.c_str();

 

char *转string

string s;

char *p = "hello";//直接赋值

s = p;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值