我正在编写一个程序,该程序将从python套接字接收命令,然后远程执行它们。起初,我打算在整个项目中使用python,但是我决定使用C ++,因此我可以学习一种新的语言。 在Python中,我有一个类似于以下内容的脚本:
list = ['arg1', 'arg2', 'arg3', 'arg4', 'arg5']
args1 = list[0]
args2 = list[1]
other = ' '.join(list[2:]) # 'arg3 arg4 arg5'
现在,我正在尝试将此代码转换为C ++,但是我还不熟悉该语言。因此,我的问题是:是否有一种简单的方法来获取vector<string>
中特定索引之后的所有项目并将它们连接到单个字符串中?
答案 0 :(得分:4)
您可以将迭代器与数字lib一起使用
#include <numeric>
#include <vector>
#include <iostream>
using namespace std;
int main(int, char**) {
vector<string> v{"arg1", "arg2", "arg3", "arg4"};
size_t index = 2;
string merged = accumulate(v.begin() + index, v.end(), string(""));
cout << merged; //arg3arg4
}
但是,这不会分隔带有空格的项目。为此,您将不得不添加一些额外的代码
...
accumulate(v.begin() + index, v.end(), string(""),
[](string& v, const string& item){
return v.empty() ? item : v + ' ' + item;
});
答案 1 :(得分:0)
您可以使用insert来指定要插入的位置以及其他容器的范围。
str2.insert(str2.begin() + idx, str1.begin(), str1.end()