我正在尝试在C++中将字符串向量转换为字符数组。
更具体地说,我想要做的是通过使用以下内容来拆分shell命令,例如“ls -latr”:
istringstream f(x);
while (getline(f, x, ' '))
{
strings.push_back(x);
}
我相信这会给我
strings[0] == "ls"
和strings[1]==" -latr"
。接下来,我尝试执行以下操作:
execvp(strings[0], strings);
然而,我遇到了这个错误:
错误:不能将“std::basic_string,std :: allocator >”转换为“const char *”,用于参数“1”,以便“int execvp(const char *,char * const *)”
因此,我正在尝试弄清楚如何将字符串转换为字符数组。
strings[0]
的末尾添加.c_str()
;但是你仍然需要为第二个参数构建另一个指针向量。 - Kalstd::vector<std::string>
,使用strings[0].c_str()
。第二个参数需要一个指针数组,因此更复杂。 - Roddywhile (f >> x) { strings.push_back(x); }
代替 getline。 - Kerrek SB