繁体   English   中英

在c ++中将字符串向量转换为char数组

[英]Convert string vector to char array in c++

我正在尝试将字符串向量转换为c ++中的char数组。

更具体地说,我要做的是通过使用以下方法拆分像“ls -latr”这样的shell命令:

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 *)'

因此,我试图找出如何将字符串转换为char数组。

阅读手册显示“ execvp提供了一个指向以null结尾的字符串的指针数组”。 所以你需要创建这样一个数组。 这是一种方式:

std::vector<char *> argv(strings.size() + 1);    // one extra for the null

for (std::size_t i = 0; i != strings.size(); ++i)
{
    argv[i] = &strings[i][0];
}

execvp(argv[0], argv.data());

您可以尝试使用std::string c_str()方法。 它从std::string类返回类似C的字符串,即execvpe所需的char *。 查看此链接了解更多详情。

如果char数组不会被更改,您可以使用

strings[0].c_str()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM