Vector Push_back
Vector Push_back
可能重复:
带字符串拆分的空支票
我用"&"分隔下面的字符串并将其保存在矢量中
const vector<string> vec = split("f0=fname0&l0=lname0&f1=fname1&l1=lname1&f2=fname2&l2=lname2&f3=&l3=","&");
现在,我再次使用下面的代码用'='分割分割的字符串。
vector<string> vec1;
for (std::vector<std::string>::size_type a = 0; a < vec.size(); ++a)
{
vec1=split(vec.at(a),"=");
}
最后,我只得到向量"vec"到"vec1"的最后一项。每次我的vec1指针刷新时。但我想在vec1的最后一个位置添加分裂的字符串。我该怎么做?
在循环中每次都分配给vec1
,因此它只包含最后一对。相反,您应该将附加到vec1
。这是用insert
函数最简单地完成的:
vector<string> vec1;
for (std::vector<std::string>::size_type a = 0; a < vec.size(); ++a)
{
vector<string> tmp = split(vec.at(a),"=");
vec1.insert(vec1.end(), tmp.begin(), tmp.end());
}
你知道向量是什么吗?拆分字符串并将其再次放在一个向量"空间"中(那时你可以保留字符串)
我猜您使用的是boost的split()函数。。然后跳过for循环,直接调用
const vector<string> vec = split("f0=fname0&l0=lname0&f1=fname1&l1=lname1&f2=fname2&l2=lname2&f3=&l3=","&");
for( int i = 0; i <= vec.size(); i++){
cout << i << "#: " << vec.at(i) << endl;
}
查看矢量内容(在索引处)
这是因为您要分配给vec1
而不是追加。您正在替换以前生成的内容,并以上次迭代的结果结束(您可以使用vec1.push_back()
修复它)。
所以,你想得到一个带参数的字符串向量,但你要如何确定哪个值属于哪个参数。IMO,你最好使用std::map
:
using std::string;
using std::vector;
using std::map;
vector<stirng> vec = split("f0=fname0&l0=lname0&f1=fname1&l1=lname1&f2=fname2&l2=lname2&f3=&l3=","&");
map<string, string> params;
for (auto it = vec.begin(); it != vec.end(); ++it) {
vector<string> p = split(*it, "=");
params.insert(p[0], p[1]);
}
现在您将在params
中有一个包含其值的键列表,因此您将能够使用params["f0"]
。
相关文章:
- 推导 std::vector::back() 的返回类型
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- vector.push_back(vector.back()+1) 是未定义的行为吗?
- C++自己的对象堆栈.在 push() 上复制了什么?
- C++ push() 和 pop() 方法使用指针的动态 LinkedList 的问题
- 如何像在javascript中一样"push" c ++映射
- 线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
- std::vector using back(), pop_back(), push_back(), 得到'double free or corruption'错误
- vector.back()和vector.end()有什么区别
- 列表大小为 1,但 front() 和 back() 不相等
- 返回C++中没有 back() 方法的容器的最后一个元素?
- 在非空 std::list 上使用 std::list.back<int>() 时"Segmentation Fault"
- 模板堆栈类的复制构造函数中的 pop() 和 push() 不起作用
- 我们可以使用Back() - 值索引在其上执行向量插入
- 当我运行以下代码添加str.front() str.back时,它给了我200个,但为什么
- push(ing)back在循环中对象指针
- 在 C++ 中将元素添加到空向量:为什么 push.back 有效而 [] 无效
- 我似乎无法让 v.push.back() 处理字符串
- String::push_back() does not push back
- 向量resize(), push.back(), reserve()方法