相关疑难解决方法(0)

为什么ostream_iterator不能按预期工作?

不用说以下代码:

#include <utility>
#include <vector>
#include <iostream>
#include <iterator>

using namespace std;

typedef pair<char, char> PAIR;

ostream& operator <<(ostream& os, const PAIR& r)
{
    return os << r.first;
}

int main() 
{
    vector<PAIR> coll; 

    cout << coll[0]; // OK. 

    // The following line will cause a compilation error! Why???
    copy(coll.begin(), coll.end(), ostream_iterator<PAIR>(cout)); 
}
Run Code Online (Sandbox Code Playgroud)

c++ stream

10
推荐指数
2
解决办法
1937
查看次数

重载>> ifstream_iterator对

我正在尝试在对上构造ifstream_iterator.我的代码如下:

typedef pair<float, int> T;

istream& operator>>(istream& stream, T& in) {
    stream >> in.first >> in.second;
    return stream;
}


int main(int argc, char **argv) {
    ifstream infile("dummy2");
    istream_iterator<T> iit(infile);
    istream_iterator<T> eos;
    while (iit != eos) {
        cout << (*iit).first << endl;
        ++iit;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我有一个虚拟文件"dummy2"如下:

"a" 4 "b" 5
Run Code Online (Sandbox Code Playgroud)

我想输出对{"a",4}和{"b",5}.

但是,我得到了令人讨厌的编译错误

In file included from /usr/include/c++/4.6/iterator:66:0,
                 from filestream.cpp:9:
/usr/include/c++/4.6/bits/stream_iterator.h: In member function ‘void std::istream_iterator<_Tp, _CharT, _Traits, _Dist>::_M_read() [with _Tp = std::pair<float, int>, _CharT = char, _Traits = std::char_traits<char>, …
Run Code Online (Sandbox Code Playgroud)

c++ iterator

8
推荐指数
1
解决办法
313
查看次数

标签 统计

c++ ×2

iterator ×1

stream ×1