为什么不是运营商<<发现了什么? [英] Why isn't the operator<< found?

查看:54
本文介绍了为什么不是运营商<<发现了什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我正在尝试使用istream_iterators来读取由一对组成的文件

的数字。为此,我写了以下内容:


#include< fstream>

#include< vector>

# include< iterator>


using namespace std;


typedef std :: pair< double,double> float_pair;


std :: istream&运营商GT;> (std :: istream& s,

std :: pair< double,double>& p)

{

s>> p.first;

s>> p.second;

返回s;

}


main(){

ifstream文件(" filename");


float_pair p;

file>>磷; //这个有效


std :: vector< float_pair>位置//但这不是
(istream_iterator< float_pair>(文件),

(istream_iterator< float_pair>()));

}


这曾经在我的旧编译器(KCC)下运行,但是GCC 4.0说它不能找到运算符<< (我认为...)完整的错误信息如下。

然而,操作员工作是因为当我尝试阅读一个单独的

对时,它可以工作。是否需要为

istream_iterator执行一些魔术才能找到运算符<< ;?


谢谢,


/ Patrik Jonsson

[patrik @ governator src] $ g ++ optest.cc

/usr/lib/gcc/x86_64-redhat-linux/4.0.0 /../../../../include/c++/4.0.0/bits/stream_iterator.h:

在成员函数''void std :: istream_iterator< _Tp,_CharT, _Traits,

_Dist> :: _ M_read()[with _Tp = float_pair,_CharT = char,_Traits =

std :: char_traits< char>,_Dist = ptrdiff_t]' ':

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator .h:68:

实例化''std :: istream_iterator< _Tp,_CharT,_Traits,

_Dist> :: istream_iterator(std :: basic_istream< _CharT,_Traits> ;&)[与

_Tp = float_pair,_CharT = char,_Traits = std :: char_traits< char>,

_Dist = ptrdiff_t]''

optest.cc:24:instan来自这里

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/ stream_iterator.h:119:

错误:''运算符>>''不匹配

''*((std :: istream_iterator< float_pair,char, std :: char_traits< char>,

ptrdiff_t> *)this) - > std :: istream_iterator< float_pair,char,

std :: char_traits< char>, ptrdiff_t> :: _ M_stream>>

((std :: istream_iterator< float_pair,char,std :: char_traits< char>,

ptrdiff_t> *)this) - > std :: istream_iterator< float_pair,char,

std :: char_traits< char> ;, ptrdiff_t> :: _ M_value''

/ usr / lib / gcc / x86_64-redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:131:

注意:候选人是:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,

_Traits> :: operator>>(std :: basic_istream< _CharT,_Traits>& ;

(*)(std :: basic_i stream< _CharT,_Traits>&))[with _CharT = char,_Traits

= std :: char_traits< char>]

/ usr / lib / gcc / x86_64 -redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:134:

注意:std :: basic_istream< _CharT, _Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(std :: basic_ios< _CharT,

_Traits>& (*)(std :: basic_ios< _CharT,_Traits>&))[with _CharT = char,

_Traits = std :: char_traits< char>]

/ usr / lib / gcc / x86_64-redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:137:

注意: std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(std :: ios_base&

(* )(std :: ios_base&))[with _CharT = char,_Traits =

std :: char_traits< char>]

/ usr / lib / gcc / x86_64- redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:169:

注意:std :: basic_istream< _CharT,_Traits> ;&

std :: basic_istream< _CharT,_Traits> :: operator>>(bool&)[与_CharT =

char,_Traits = std :: char_traits< ; char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream :172:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(short int&)[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:175:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(short unsigned int&)

[_CharT = char,_ Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../ ../../include/c++/4.0.0/istream:178:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(int&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/ usr /lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:181:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(unsigned int&)[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:184:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long int&)[with _CharT

= char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../ .. /../include/c++/4.0.0/istream:187:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long unsigned int&)

[with _CharT = char,_Traits = std :: char_traits< char>]

/ usr /lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:191:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long long int&)[with

_CharT = char,_Traits = std :: char_traits< char> ]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:194:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long long unsigned

int&)[with _CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/ ../../../../include/c++/4.0.0/istream:198:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(float&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:201:

note:std :: basic_istream< _CharT,_Traits> &

std :: basic_istream< _CharT,_Traits> :: operator>>(double&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream: 204:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long double& )[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/ ../../../../include/c++/4.0.0/istream:207:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(void *&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:230:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,

_Traits> :: operator>>(std :: basic_streambuf< _CharT,_Traits> *)[with

_CharT = char,_ Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../。 ./include/c++/4.0.0/istream:688:

注意:std :: basic_istream< char,_Traits>&

std :: operator>> (std :: basic_istream< char,_Traits>& ;, unsigned char&)

[with _Traits = std :: char_traits< char>]

/ usr / lib / gcc / x86_64-redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:693:

注意:std :: basic_istream< ; char,_Traits>&

std :: operator>>(std :: basic_istream< char,_Traits>& ;, signed char&)[with

_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/ 4.0.0 / istream:729:

注意:std :: basic_istream< cha r,_Traits>&

std :: operator>>(std :: basic_istream< char,_Traits>& ;, unsigned char *)

[with _Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0 .0 / istream:734:

注意:std :: basic_istream< char,_Traits>&

std :: operator>>(std :: basic_istream< char ,_Traits>& ;, signed char *)[with

_Traits = std :: char_traits< char>]

解决方案

g ++ optest.cc

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/ 4.0.0 / bits / stream_iterator.h:

在成员函数''void std :: istream_iterator< _Tp,_CharT,_Traits,

_Dist> :: _ M_read() [使用_Tp = float_pair,_CharT = char,_Traits =

std :: char_traits< char>,_ Dist = ptrdiff_t]'':

/ usr / lib / gcc / x86_64的-红帽-LINUX / 4.0.0 /../../../../包括/ C ++ / 4.0.0 /比特/ STRE am_iterator.h:68:

实例化''std :: istream_iterator< _Tp,_CharT,_Traits,

_Dist> :: istream_iterator(std :: basic_istream< _CharT, _Traits>&)[with

_Tp = float_pair,_CharT = char,_Traits = std :: char_traits< char>,

_Dist = ptrdiff_t]''
optest.cc:24:从这里实例化

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../ .. /include/c++/4.0.0/bits/stream_iterator.h:119:

错误:''运营商>>''不匹配

''* ((std :: istream_iterator< float_pair,char,std :: char_traits< char>,

ptrdiff_t> *)this) - > std :: istream_iterator< float_pair,char,

std :: char_traits< char> ;, ptrdiff_t> :: _ M_stream>>

((std :: istream_iterator< float_pair,char,std :: char_traits< char>,

ptrdiff_t> *)this) - > std :: istream_iterator< float_pair,char,

std :: char_traits< char>,ptrdiff_t&g t; :: _ M_value''

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0。 0 / istream:131:

注意:候选人是:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,

_Traits> :: operator>>(std :: basic_istream< _CharT,_Traits>&

(*)(std :: basic_istream< _CharT,_Traits>&))[with _CharT = char,_Traits

= std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../ ../../../include/c++/4.0.0/istream:134:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(std :: basic_ios< _CharT,

_Traits>& (*)(std :: basic_ios< _CharT,_Traits>&))[with _CharT = char,

_Traits = std :: char_traits< char>]

/ usr / lib / gcc / x86_64-redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:137:

注意: std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(std :: ios_base&

(* )(std :: ios_base&))[with _CharT = char,_Traits =

std :: char_traits< char>]

/ usr / lib / gcc / x86_64- redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:169:

注意:std :: basic_istream< _CharT,_Traits> ;&

std :: basic_istream< _CharT,_Traits> :: operator>>(bool&)[与_CharT =

char,_Traits = std :: char_traits< ; char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream :172:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(short int&)[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:175:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(short unsigned int&)

[_CharT = char,_ Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../ ../../include/c++/4.0.0/istream:178:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(int&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/ usr /lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:181:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(unsigned int&)[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:184:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long int&)[with _CharT

= char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../ .. /../include/c++/4.0.0/istream:187:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long unsigned int&)

[with _CharT = char,_Traits = std :: char_traits< char>]

/ usr /lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:191:

note:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long long int&)[with

_CharT = char,_Traits = std :: char_traits< char> ]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:194:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long long unsigned

int&)[with _CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/ ../../../../include/c++/4.0.0/istream:198:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(float&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:201:

note:std :: basic_istream< _CharT,_Traits> &

std :: basic_istream< _CharT,_Traits> :: operator>>(double&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream: 204:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(long double& )[with

_CharT = char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/ ../../../../include/c++/4.0.0/istream:207:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,_Traits> :: operator>>(void *&)[with _CharT =

char,_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:230:

注意:std :: basic_istream< _CharT,_Traits>&

std :: basic_istream< _CharT,

_Traits> :: operator>>(std :: basic_streambuf< _CharT,_Traits> *)[with

_CharT = char,_ Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../。 ./include/c++/4.0.0/istream:688:

注意:std :: basic_istream< char,_Traits>&

std :: operator>> (std :: basic_istream< char,_Traits>& ;, unsigned char&)

[with _Traits = std :: char_traits< char>]

/ usr / lib / gcc / x86_64-redhat-linux / 4.0.0 /../../../../ include / c ++ / 4.0.0 / istream:693:

注意:std :: basic_istream< ; char,_Traits>&

std :: operator>>(std :: basic_istream< char,_Traits>& ;, signed char&)[with

_Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/ 4.0.0 / istream:729:

注意:std :: basic_istream< cha r,_Traits>&

std :: operator>>(std :: basic_istream< char,_Traits>& ;, unsigned char *)

[with _Traits = std :: char_traits< char>]

/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0 .0 / istream:734:

注意:std :: basic_istream< char,_Traits>&

std :: operator>>(std :: basic_istream< char ,_Traits>& ;, signed char *)[with

_Traits = std :: char_traits< char>]


lutorm写道:

大家好,
我正在尝试使用istream_iterators来读取由数字对组成的文件。为此,我写了以下内容:

#include< fstream>
#include< vector>
#include< iterator>
....



我不知道你是否错误地复制了代码,或者你想要的代码是什么?
post有一个括号在错误的地方。请注意,我使用了GCC 3.3.5

和GCC 4.0.1。您可能想要获得最新的次要版本。


cat main.cpp

#include< fstream>

#include< vector>

#include< iterator>

#include< istream>


使用命名空间std;


typedef std :: pair< double,double> float_pair;


std :: istream&运营商GT;> (std :: istream& s,

std :: pair< double,double>& p)

{

s>> p.first;

s>> p.second;

返回s;

}


main(){

ifstream文件(" filename");


float_pair p;

file>>磷; //这个有效


std :: vector< float_pair>位置//但这不是
(istream_iterator< float_pair>(文件),istream_iterator< float_pair>());

}

Hi everyone,
I''m trying to use istream_iterators to read a file consisting of pairs
of numbers. To do this, I wrote the following:

#include <fstream>
#include <vector>
#include <iterator>

using namespace std;

typedef std::pair<double, double> float_pair;

std::istream& operator>> (std::istream& s,
std::pair<double, double>& p)
{
s >> p.first;
s >> p.second;
return s;
}

main(){
ifstream file ("filename");

float_pair p;
file >> p; // this works

std::vector<float_pair> positions // but this doesn''t
(istream_iterator<float_pair> (file),
(istream_iterator<float_pair> ()));
}

This used to work under my old compiler (KCC) but GCC 4.0 says it can''t
find the operator<< (I think...) The full error message is below.
However, the operator works because when I try to read an individual
pair it works. Is there some magic that needs to be performed for the
istream_iterator to find the operator<<?

Thanks,

/Patrik Jonsson
[patrik@governator src]$ g++ optest.cc
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:
In member function ''void std::istream_iterator<_Tp, _CharT, _Traits,
_Dist>::_M_read() [with _Tp = float_pair, _CharT = char, _Traits =
std::char_traits<char>, _Dist = ptrdiff_t]'':
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:68:
instantiated from ''std::istream_iterator<_Tp, _CharT, _Traits,
_Dist>::istream_iterator(std::basic_istream<_CharT , _Traits>&) [with
_Tp = float_pair, _CharT = char, _Traits = std::char_traits<char>,
_Dist = ptrdiff_t]''
optest.cc:24: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:119:
error: no match for ''operator>>'' in
''*((std::istream_iterator<float_pair, char, std::char_traits<char>,
ptrdiff_t>*)this)->std::istream_iterator<float_pair, char,
std::char_traits<char>, ptrdiff_t>::_M_stream >>
((std::istream_iterator<float_pair, char, std::char_traits<char>,
ptrdiff_t>*)this)->std::istream_iterator<float_pair, char,
std::char_traits<char>, ptrdiff_t>::_M_value''
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:131:
note: candidates are: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT, _Traits>&
(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:134:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_ios<_CharT,
_Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:137:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:169:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:172:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:175:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:178:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:181:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:184:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:187:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:191:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:194:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned
int&) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:198:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:201:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:204:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:207:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:230:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:688:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:693:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char&) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:729:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:734:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char*) [with
_Traits = std::char_traits<char>]

解决方案

g++ optest.cc
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:
In member function ''void std::istream_iterator<_Tp, _CharT, _Traits,
_Dist>::_M_read() [with _Tp = float_pair, _CharT = char, _Traits =
std::char_traits<char>, _Dist = ptrdiff_t]'':
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:68:
instantiated from ''std::istream_iterator<_Tp, _CharT, _Traits,
_Dist>::istream_iterator(std::basic_istream<_CharT , _Traits>&) [with
_Tp = float_pair, _CharT = char, _Traits = std::char_traits<char>,
_Dist = ptrdiff_t]''
optest.cc:24: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/bits/stream_iterator.h:119:
error: no match for ''operator>>'' in
''*((std::istream_iterator<float_pair, char, std::char_traits<char>,
ptrdiff_t>*)this)->std::istream_iterator<float_pair, char,
std::char_traits<char>, ptrdiff_t>::_M_stream >>
((std::istream_iterator<float_pair, char, std::char_traits<char>,
ptrdiff_t>*)this)->std::istream_iterator<float_pair, char,
std::char_traits<char>, ptrdiff_t>::_M_value''
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:131:
note: candidates are: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_istream<_CharT, _Traits>&
(*)(std::basic_istream<_CharT, _Traits>&)) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:134:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(std::basic_ios<_CharT,
_Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:137:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(std::ios_base&
(*)(std::ios_base&)) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:169:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:172:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:175:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:178:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:181:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:184:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT
= char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:187:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&)
[with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:191:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:194:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned
int&) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:198:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:201:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:204:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:207:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT =
char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:230:
note: std::basic_istream<_CharT, _Traits>&
std::basic_istream<_CharT,
_Traits>::operator>>(std::basic_streambuf<_CharT, _Traits>*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:688:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char&)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:693:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char&) [with
_Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:729:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, unsigned char*)
[with _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.0.0/../../../../include/c++/4.0.0/istream:734:
note: std::basic_istream<char, _Traits>&
std::operator>>(std::basic_istream<char, _Traits>&, signed char*) [with
_Traits = std::char_traits<char>]


lutorm wrote:

Hi everyone,
I''m trying to use istream_iterators to read a file consisting of pairs
of numbers. To do this, I wrote the following:

#include <fstream>
#include <vector>
#include <iterator> ....


I don''t know if you copied the code incorrectly, or the code you intended to
post had a parenthesis in the wrong place. Note that I used both GCC 3.3.5
and GCC 4.0.1. You may want to get the latest minor version.


cat main.cpp
#include <fstream>
#include <vector>
#include <iterator>
#include <istream>

using namespace std;

typedef std::pair<double, double> float_pair;

std::istream& operator>> (std::istream& s,
std::pair<double, double>& p)
{
s >> p.first;
s >> p.second;
return s;
}

main(){
ifstream file ("filename");

float_pair p;
file >> p; // this works

std::vector<float_pair> positions // but this doesn''t
(istream_iterator<float_pair> (file),istream_iterator<float_pair> ());
}


这篇关于为什么不是运营商&lt;&lt;发现了什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆