在 c++ 中将字符串向量转换为字符数组
Convert string vector to char array in c++
我正在尝试在 c++ 中将字符串向量转换为字符数组。
更具体地说,我试图做的是使用以下来拆分像"ls –latr"这样的 shell 命令:
istringstream f(x);
while (getline(f, x, ' '))
{
strings.push_back(x);
}
我相信这会给我strings[0] == "ls"
和strings[1]==" -latr"
。
然后我正在尝试执行以下操作:
execvp(strings[0], strings);
但是,我收到此错误:
错误:无法将参数"1"的"std::basic_string, std::分配器>"转换为"const char*"到"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());
您可以尝试使用c_str()
std::string
的方法。它从 std::string
类返回类似 C 的字符串,即您需要execvpe
的 char *。查看此链接了解更多详情。
如果字符数组不会更改,您可以使用
strings[0].c_str()
相关文章:
- HEX值到wchar_t字符(UTF-8)的转换
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 转换特殊字符(UTF-8)
- 将转换字符键入 int 以用作向量C++的索引
- 将字符随机转换为大写的函数
- 尝试将字符串/字符转换为整数会产生意外结果
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 转换字符时Arduino DUE 和 Arduino UNO 之间的区别
- 如何在C++中正确重载运算符转换字符*?
- 如何转换数据结构以在 c++ 中转换字符*
- 不兼容的转换字符
- 将转换字符数组[16]键入为int 128位
- 在c++中转换字符编码
- 使用递归转换字符
- 如何在Objective-C/C/C++中转换字符和字节的位置
- C++到Pep/8汇编语言的转换——字符数组
- 转换字符>十六进制