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