c++ - 使用迭代器提取字符串
问题描述
我有一个vector<string>
并使用迭代器,我需要在循环中提取迭代器指向的整个字符串:
vector<string> v;
auto iter = v.begin();
while(iter != v.end()){
auto s = //extract the string corresponding to the current iterator position
}
既然*iter
会返回我相应字符串的第一个字符,那该怎么做呢?
解决方案
如果您有权访问 C++11(我假设您这样做,正如您所使用的那样auto
),您可以使用基于范围的 for 循环:
for (const std::string &value : v)
{
// Do something with value
}
你原来的问题说,
因为 *iter 会返回我对应字符串的第一个字符
这是不正确的,*iter 将返回string
对向量内相关位置的引用。您的循环不会增加迭代器,因此您最终会得到一个无限循环。见https://wandbox.org/permlink/pCe1oQDusDbJ8HjK
推荐阅读
- php - 我们如何在没有键的情况下将字符串放入数组中
- javascript - 为什么这个自定义钩子在反应中返回未定义?
- algorithm - 如何计算一百万个二进制序列的不同组?
- beautifulsoup - 查找特定的数据可用性类
- android - 在内核中创建服务,在 Android 上监控多个包
- javascript - 将每个数组的子元素组合成一个新的最终数组 - JavaScript
- python - 过滤一组中超过1个值的行并计算它们的出现pandas python
- entity-framework-core - 内存数据库的单元/集成测试不适用于 IQueryables
- java - 附加java静态变量
- gitlab - 有没有办法根据 GitlabCI 中的不同文件更改触发合并请求上的不同提交构建?