https://stackoverflow.com/a/236803/6361644に記載されている次のコードを使用して、文字列をベクトルに解析して各要素を空白で区切って次のコードを書きました。このコードの後ベクトルに分割された文字列<char*>はベクトル要素を上書きします
std::string line = "ls -l -a";
std::string cmd;
std::vector<char*> argv;
std::stringstream ss;
ss.str(line);
std::string tmp;
getline(ss, cmd, ' ');
argv.push_back(const_cast<char*>(cmd.c_str()));
while(getline(ss, tmp, ' '))
argv.push_back(const_cast<char*>(tmp.c_str()));
argv.push_back(NULL);
印刷argvが、私は2番目の要素は上書きされている理由はわからない
{gdb) print argv
$22 = std::vector of length 3, capacity 4 = {0x26014 "ls", 0x2602c "-a", 0x2602c "-a", 0x0}
を与えます。任意のヒントをいただければ幸いです。
リンク先の回答に記載されているコードを実際に使用していませんでした。 – Barry