作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这与How to convert a vector<char*> to a vector<string>/string相反问题。
我有一些与 vector<char*>
一起使用的遗留例程所以我需要转换我的 vector<string>
.
这是我得出的结论:
std::vector<char*> charVec(strVec.size(),nullptr);
for (int i=0; i<strVec.size();i++) {
charVec[i]= new char(strVec[i].size()+1);
charVec[i][strVec[i].copy(charVec[i], strVec[i].size())] = '\0';
}
这是正确的吗?
有没有更好的实现方式?
附注当然最后我有:
for (int i=0; i<strVec.size();i++) {
delete charVec[i];
}
最佳答案
更快的方法是
std::vector<const char*> charVec(strVec.size(),nullptr);
for (int i=0; i<strVec.size();i++) {
charVec[i]= strVec[i].c_str();
}
然后使用生成的 vector 。这将为大型数据集节省大量内存分配时间。
关于c++ - 如何将 vector<string> 转换为 vector<char*>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42493101/
我是一名优秀的程序员,十分优秀!