如何将vector <string>转换为vector <char*>

bib*_*ibi 3 c++ stl char stdvector

这与如何将vector <char*>转换为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';
}
Run Code Online (Sandbox Code Playgroud)

它是否正确?

有没有更好的方法来实现它?


ps当然最后我有:

for (int i=0; i<strVec.size();i++) {
    delete charVec[i];
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*ahB 6

更快的方法是这样做

std::vector<const char*> charVec(strVec.size(),nullptr);
for (int i=0; i<strVec.size();i++) {
    charVec[i]= strVec[i].c_str();
}
Run Code Online (Sandbox Code Playgroud)

然后使用得到的矢量.这将为大型数据集的内存分配节省大量时间.