【发布时间】:2013-02-04 08:09:10
【问题描述】:
我正在尝试将字符串转换为const*char*,以便能够调用库函数。我的代码如下:
// myVec is simply a vector<string>
vector<string> myVec;
/* stuff added to myVec
* it is a vector of words that were seperated by whitespace
* for example myVec[0]=="Hey"; myVec[1]=="Buck"; myVec[2]=="Rogers"; etc...
*/
char*const* myT = new char*[500]; //I believe my problem stems from here
for(int z=0; z<myVec.size(); z++) {
string temp=myVec[z]+=" ";
myT[z]=temp.c_str();
}
//execv call here
我正在为execv() 的第二个参数构造这个。
编译器总是抛出各种错误,当我修复另一个错误时,会弹出一个(从我使用的解决方案/google-fu 看来相当循环)。
【问题讨论】:
-
这不是一个好主意,因为
temp变量就是您命名它的临时变量。也就是说c_str返回的指针也是临时的。 -
temp 很好,因为 exec 调用将在此代码之后;我不知道为什么我把新的留在里面给 myT,我一直在努力让这个工作
-
并非如此,因为
temp变量的生命周期仅在循环当前迭代内。一旦您继续下一次迭代或离开循环,编译器就可以(并且将)回收该堆栈内存。 -
哦,你不需要分配 500 个指针,因为你有向量的大小。请记住为数组分配一个额外的条目,因为数组需要由一个空指针终止。
标签: c++ c string char constants