CString与string,char*的区别和转换
1个回答
2016-06-24
展开全部
CString,是ATL/MFC共享的,string是C++标准库的相同点:(1)用他们都可以取代对char*的使用。(2)都封装了有丰富的字符串操作接口。(3)他们都是C++的类库。(4)他们都使用了模板的技术。以string的使用为例,不能有如下用法:string*pstr=NULL;//定义一个指向字符串的指针pstr->append("Helloworld.");//在该字符串的末尾粘接上另一个字符。这样做编译器不会有任何警告和错误,但是运行的时候就会有异常。原因是没有理解string是一个类,而在定义类的对象的时候是需要调用其构造函数的。上面既没有调用string的构造函数,而且还把指针赋值为NULL,很明显调用该类的对象的接口的时候会出错。但是编译器却发现不了这个问题的。正确的方法是如下:/*这里必须要用c++的宏new,而不能用c中的malloc,原因是new不但会分配一块内存,*//*还执行了类的构造函数。当然,string类的实例化还可以通过已有的某个string对象进行,请另查阅*/string*pstr=newstring("Helloworld.");pstr->append("Helloworld.");coutc_str();//并没有通过malloc或者new为指针ptmp分配内存,只是把string中的数据指针赋给了ptmp而已coutcstris:"length(),0);//如果没有上面分配内存空间,这个语句在运行时就会报段错误。cout<<"char*p:copyfromstringis:"<
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询