首页 > 解决方案 > 使用迭代器提取字符串

问题描述

我有一个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++stringiterator

解决方案


如果您有权访问 C++11(我假设您这样做,正如您所使用的那样auto),您可以使用基于范围的 for 循环

for (const std::string &value : v)
{
    // Do something with value
}

你原来的问题说,

因为 *iter 会返回我对应字符串的第一个字符

这是不正确的,*iter 将返回string对向量内相关位置的引用。您的循环不会增加迭代器,因此您最终会得到一个无限循环。见https://wandbox.org/permlink/pCe1oQDusDbJ8HjK


推荐阅读