读书人

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

发布时间: 2013-06-25 23:45:42 作者: rapoo

如何重置迭代器,再次使用该迭代器访问数据
如何再次从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/

读书人网 >C++

热点推荐