【发布时间】:2020-06-16 23:08:20
【问题描述】:
如何在 C++ 中将字符串解析为数组?
例如:"[1:2:3:4]cd/dvd PLDS DVD-RW DU8A6SH DU53 /dev/sr0"
我想在方括号[] 内获取一个整数数组。所以数组包含{1, 2, 3, 4}。
以下是我编写的代码,但我不确定这是否是最有效的方法。
std::string test = "[1:2:3:4]cd/dvd PLDS DVD-RW DU8A6SH DU53 /dev/sr0";
int begin = test.find("[");
begin = begin + 1;
std::string sub = test.substr(begin,7);
std::replace(sub.begin(), sub.end(), ':', ' ');
std::vector<int> arr;
std::stringstream ss(sub);
int temp;
while (ss >> temp)
arr.push_back(temp);
注意:"[" 之前不会出现某些内容。 "[" 将永远存在。这些数字将始终是一个数字。方括号内总是有四个整数。 "]" 将永远存在。文字总是跟在"]" 之后。
【问题讨论】:
-
编辑您的问题并提供更详细的问题陈述。
[之前会有什么东西吗?[会一直存在吗?数字总是1个字符吗?分隔符是否总是:?]会一直存在吗?文字会一直跟随]吗? -
数组会有固定数量的元素,不是吗?在这种情况下,您甚至不需要/想要一个整数向量,而是一个
std::array,或者更好 - 具有有意义的字段名称的结构/类。 -
在 [.是的, [ 将在场。是的,数字将永远是一位数。是的 ] 总是在场。文本始终跟在 ] 之后
-
正如@einpoklum 所问的,数字是否总是4?你真的想要
std::vector<int>吗?也许其他选择可能会更好。无论如何,请编辑您的问题并在此处添加其他详细信息,不要将详细信息留在 cmets 上。 -
是的。方括号内将有四个数字。我将编辑我的问题。谢谢@Costantino Grana
标签: c++ visual-c++ c++17