Я пытаюсь преобразовать строку в const*char*
, чтобы иметь возможность вызвать библиотечную функцию. Мой код выглядит следующим образом:constructing char * const * from string
// 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 происходит только внутри текущей итерации циклов. После того, как вы продолжите следующую итерацию или покинете цикл, эта память стека (и будет) будет исправлена компилятором. –