如何将std::string转换为char*或const char*
如果只想将std::string传递给需要const char*的函数,可以使用
std::string str;
const char*c=str.c_str();
如果您想获得可写副本,如char*,您可以使用以下方法:
std::string str;
char*writable=新字符[str.size()+1];
std::copy(str.begin(),str.end(),可写);
可写[str.size()]='\0';//不要忘记终止0
//使用完后别忘了松开绳子
删除[]可写;
编辑:请注意,上述内容并非例外安全。如果new调用和delete调用之间发生任何错误,您将泄漏内存,因为不会自动调用delete。有两种直接的方法可以解决这个问题
boost::作用域数组
boost::scoped_array将在超出范围时为您删除内存:
std::string str;
boost::作用域数组<;char>;可写(新字符[str.size()+1]);
std::copy(str.begin()、str.end()、writable.get());
可写[str.size()]='\0';//不要忘记终止0
//使用writable.get()获取字符*
//如果智能指针移动,内存将自动释放
//超出范围
向量
这是标准方式(不需要任何外部库)。您可以使用std::vector,它可以为您完全管理内存
std::string str;
标准::向量<;char>;可写(str.begin(),str.end());
可写。推回('\0');
//使用&;获取字符*;可写[0]或&*可写的。开始()