istream_iterator怎么用???

leebuilder 2003-10-16 08:37:07
istream_iterator怎么用???

istream_iterator<int> infile(cin);
istream_iterator<int> inputInt;
vector<int> iVec(infile, inputInt);

vector<int>::iterator iterBeg2 = iVec.begin();
vector<int>::iterator iterEnd2 = iVec.end();
for(; iterBeg2 != iterEnd2; iterBeg2++)
cout<<*iterBeg2<<" ";
这是我按照《C++ Primer》写的例子但是出现错误,我不知道为什么,
...全文
92 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
JohnFractal 2003-10-17
  • 打赏
  • 举报
回复
我也遇到一个istream_iterator的问题,代码如下:

istream& operator>>(istream& is, Block& block)
{
istream_iterator<unsigned int> ibegin( is );
istream_iterator<unsigned int> iend();
for ( int i = 0; (i < BLOCK_SIZE) && (ibegin != iend); ++i, ibegin++ )
{
block.block_.sector_.bytes_[i] = *ibegin;
}

return is;
}

在dev-cpp下面编译,有如下的出错提示:

main.cpp: In function `std::istream& operator>>(std::istream&, Block&)':
main.cpp:111: no match for `std::istream_iterator<unsigned int, char,
std::char_traits<char>, ptrdiff_t>& != std::istream_iterator<unsigned int,
char, std::char_traits<char>, ptrdiff_t> (&)()' operator

C:/Dev-Cpp/include/objbase.h:65: candidates are: BOOL operator==(const GUID&,
const GUID&)


居然说不能用!=比较两个istream_iterator !!不知道大家有没有解决的方法呢?
谢谢
Andy84920 2003-10-17
  • 打赏
  • 举报
回复
标准库为输入输出iostream的iterator提供了支持.
把istream_iterator, ostream_iterator, 对象用一个istream, ostream或其派生类对象进行.
关联,也就是说把这个关联的对象具有iterator的性质.

EG:

ostream_iterator<int> ifile(cout , " ");

把ifile用在可以使用iteraotr的地方.
5510 2003-10-17
  • 打赏
  • 举报
回复
#include <iostream>
#include <iterator>
#include <vector>
#include<algorithm>
using namespace std;

void main()
{
istream_iterator<int> infile(cin);
istream_iterator<int> inputInt;
vector<int> iVec;
copy(infile,inputInt,back_inserter(iVec));

vector<int>::iterator iterBeg2 = iVec.begin();
vector<int>::iterator iterEnd2 = iVec.end();
for(; iterBeg2 != iterEnd2; iterBeg2++)
cout<<*iterBeg2<<" ";
}
leebuilder 2003-10-17
  • 打赏
  • 举报
回复
我使想知道istream_iterator的用法,谁可以说清楚啊?
bosedom 2003-10-16
  • 打赏
  • 举报
回复
#include <iostream>
#include <iterator>
#include <vector>
using namespace std;

void main()
{
istream_iterator<int> infile(cin);
istream_iterator<int> inputInt;
vector<int> iVec;
copy(infile,inputInt,inserter(iVec,iVec.begin()));

vector<int>::iterator iterBeg2 = iVec.begin();
vector<int>::iterator iterEnd2 = iVec.end();
for(; iterBeg2 != iterEnd2; iterBeg2++)
cout<<*iterBeg2<<" ";
}

Ctrl+Z 结束。即可。
bosedom 2003-10-16
  • 打赏
  • 举报
回复
系统提示什么错误?最好把全部的代码写出来。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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