【问题标题】:How does istream::operator>>( const char& ) as no such function is implemented?istream::operator>>( const char& ) 没有这样的功能是如何实现的?
【发布时间】:2013-08-23 13:25:13
【问题描述】:
查看istream documentation,你会看到没有函数istream &operator>>( char& )的实现,但是如果你编译运行下面的代码,它会按预期工作。
#include<iostream>
int main( ) {
char c;
std::cin >> c;
std::cout << c << std::endl;
return( 0 );
}
鉴于cin 是类istream 的对象,operator>> 的特化称为
std::cin >> c;什么时候执行?
【问题讨论】:
标签:
c++
operators
istream
【解决方案2】:
如here 所述,operator>> 也被实现为 cin 的非成员函数。
非成员函数:
istream& operator>>( istream& st, char& ch );
在 § 27.7.2.2.3 部分中总是有明确规定的标准:
27.7.2.2.3 basic_istream::operator>> [istream::extractors]
11/ 返回: in.
template<class charT, class traits> basic_istream<charT,traits>& operator>>
(basic_istream<charT,traits>& in, charT& c);
template<class traits> basic_istream<char,traits>& operator>>
(basic_istream<char,traits>& in, unsigned char& c);
template<class traits> basic_istream<char,traits>& operator>>
(basic_istream<char,traits>& in, signed char& c);