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都是指向同一个地址,所以要在使用过程中注意。

发表评论: