如何重置迭代器,再次使用该迭代器访问数据

dianyancao 2013-06-17 12:43:18
如何再次从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;
}
...全文
426 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞天御剑流 2013-06-18
  • 打赏
  • 举报
回复
自行添加cin.clear()和cin.sync()就行了,这些事情应该自己会做,不需要别人提了。
dianyancao 2013-06-17
  • 打赏
  • 举报
回复
不行哦,输入字母,成死循环了,要再次输入呢
有新工作否 2013-06-17
  • 打赏
  • 举报
回复

#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();
飞天御剑流 2013-06-17
  • 打赏
  • 举报
回复
引用 楼主 dianyancao 的回复:
如何再次从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;
}
不用搞这么多代码,两三行完事:
std::vector< int > example;
    while( 1 )
    {
        copy( std::istream_iterator< int >( std::cin ), std::istream_iterator< int >(), back_inserter( example ) );
        copy( example.begin(), example.end(), std::ostream_iterator< int >( std::cout, " ") );
    }

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧