String、Cstring、char*之间的关系与转换一直都是似懂非懂的,而且在MFC程序汇中也不知道什么时候有哪一个,一头雾水。。于是把网上的东西,结合之间的理解整理了一下。
一、概述
先说char*(这个是基础),因为其应该是最简单和最基础的,其从作用上讲就相当于一般的int*或者double*,这种基础的结构。但是由于字符串的特殊性,我们有单独用了其他类来处理。在c++中用了String类,而在MFC中用了Cstring类。所以,从根本上说,char*是最基本的,而string和cstring只是对char*的一个拓展而已。
二、比较
那么着三种的相互关系是什么呢?因为string和cstring都是对char*的拓展,我们可以知道他们都应该是对char*继续兼容的,这种兼容可以通过构造函数和operator=来进行。同时,如果高级的string和cstring要向低级的char*转换,就需要借助函数了。我们可以通过函数format进行。下面具体的给予说明:
1:同级之间的string和cstring
a:string到cstring
cstring.format("%s",string.c_str());
b:cstring到string
string s(cstring.getbuffer());
或者