首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么重置迭代器,再次使用该迭代器访问数据

2013-06-25 
如何重置迭代器,再次使用该迭代器访问数据如何再次从cin中读取字符?#include iostream#include iterato

如何重置迭代器,再次使用该迭代器访问数据
如何再次从cin中读取字符?

#include <iostream>
#include <iterator>
#include <vector>
#include <numeric>

using namespace std;

int main(int argc,char* argv[])
{
vector<int> numbers;
istream_iterator<int> numbersInput(cin),numbersEnd;

while (numbersInput!=numbersEnd)
{
numbers.push_back(*numbersInput++);
}
cout<<accumulate(numbers.begin(),numbers.end(),0)<<endl;

cin.ignore(1024,'\t');
cin.clear();
numbersInput=istream_iterator<int>(cin);    //如何重置该迭代器,再次从cin中读取字符?
cout<<accumulate(numbersInput,numbersEnd,0)<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}

[解决办法]

#include <iostream>
#include <iterator>
#include <vector>
#include <numeric>
 
using namespace std;
 
int main(int argc,char* argv[])
{
    vector<int> numbers;
    istream_iterator<int> numbersInput(cin),numbersEnd;
 
    while (numbersInput!=numbersEnd)
    {
        numbers.push_back(*numbersInput++);
    }
    cout<<accumulate(numbers.begin(),numbers.end(),0)<<endl;
     
    //cin.ignore(1024,'\t');
    cin.clear();
cin.sync();
    
numbersInput = cin;

while (numbersInput!=numbersEnd)
    {
        numbers.push_back(*numbersInput++);
    }
    cout<<accumulate(numbers.begin(),numbers.end(),0)<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}


刷新cin用cin.sync();
[解决办法]
参考http://www.cplusplus.com/reference/istream/istream/

热点排行