2008-07-24 22:32:27 作者:AzureSky
对于c++的string来说,要转换成char*,一般有两种方法:
一般来说,我们用得比较多的是第一种:
std::string str(”hello”);
char *ptr=new char[str.size()+1];
strcpy(ptr,str.c_str());
这样就完成了一次的转换。
现在我们来看看第二种方法:
char *ptr=const_cast<char*>(str.c_str());
这样,我们就可以很简单地把str转换成char*,str.c_str()返回的是const char *型,
我们需要的是char*型,所以我们可以使用const_cast来把const去掉。
这样做也比第一种方法好,他不用复制一次,而且没有new的时候内存不足的问题。
但是要注意的是,第一种方法的ptr所指向的并不是str的地址,而是另外开辟的地址,
而第二种方法,str和ptr都是指向同一个地址,所以要在使用过程中注意。

