我试图用C ++编写基本的命令行程序。虽然代码的其余部分也可能存在问题,但我现在面临的问题是:我将输入的行分成几部分,但我无法弄清楚如何获得所有代码但第一个,所以我可以将它作为命令的参数列表传递给它。
如果这是Ruby,我会做这样的事情,其中parts
是命令的空格分隔参数数组:
command = parts[0]
args = parts[1..-1]
其中parts
是以空格分隔的位数组。
TL; DR :除了vector
的第一个元素外,我怎能得到所有元素?
如果使用其他类型更容易,请随意说 - 我不认为我 很难将其移植过来。
我已尝试使用deque
,但我不想修改parts
,只是获取部分内容。我也在这个网站上搜索过,但所有出现的问题要么是相关的,要么以我无法使用的方式解决,开始我真的很讨厌的解决方法,我宁愿避免,或完全无关。
P.S。我不是using namespace std
,但是std::
很难输入,所以我在这里省略了它。如果适用,请在答案中提供。
P.P.S。我只是(重新)从C ++开始,所以请提供解释和答案。
答案 0 :(得分:9)
TL; DR:除了矢量的第一个元素外,我怎样才能获得所有元素?
如果你想要一个包含它的矢量,那么这样做:
std::vector<int> parts = ...;
std::vector<int> args(parts.begin() + 1, parts.end());
如果您只想访问向量元素,请从parts.begin()+1
开始直到parts.end()
。
答案 1 :(得分:4)
最常用的方法是使用迭代器并让你的函数接受这样的迭代器:
template<typename It>
void func(It begin, It end) { ... }
然后你将你的矢量传递给:
func(begin(vector) + 1, end(vector));