string 属于标准C++模版STL的一个字符串类实例,CString是微软提供的一个字符串类
第一局:返回数组指针
/
string str;
str.c_str();//string只需调用c_str()
/
CString str;
str.GetBuffer(0);//调用GetBuffer(0)
str.ReleaseBuffer();//用后必须调用ReleaseBuffer(),否则下次返回指针可能无效
CString str;
char *p=(LPSTR)(LPCSTR)str;/////最简洁的转换07-11-2
const char *p=(LPCSTR)str;/////最简洁的转换07-11-6
结论:string简洁的代码胜出
第二局:格式化数字类型数据比较
//
CString str;
str.Format("%d",100);
///
string有三种方法,
法一:stringstream
stringstream sstr;//#include
string str;
sstr<< 100;
sstr>> str;
法二:wsprintf
int i = 100;
char buf[5];
wsprintf(buf,"%d",i);
string str=buf;
法三:_itoa或itoa
char buf[4];
int n = 100;
_itoa( i, buf, 10 );
string str=buf;
//
结论:CString简洁的代码胜出
第三局:返回数组指针
//
string str;
str.resize(5);
strcpy(str.data,"abcd");
//
CString str;
strcpy(str.GetBuffer(5),"abcd");
/
结论:CString简洁的代码胜出
第四局:支持memset函数
struct{ int n;string str;}a;
memset(a,0,sizeof(a));
a.str="abc";//没有出现异常
///
struct{ int n;CString str;}a;
memset(a,0,sizeof(a));//没有出现异常
a.str="abc";//程序崩溃
本人实践认为,两者可谓平分秋色,旗鼓相当,不同时刻选择最优者使用,能够明显减少代码量,况且两者转换的方法很简单.
string PK CString
最新推荐文章于 2024-11-09 20:38:27 发布