【问题标题】: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&gt;&gt; 的特化称为 std::cin &gt;&gt; c;什么时候执行?

【问题讨论】:

标签: c++ operators istream


【解决方案1】:

operator&gt;&gt; 也被实现为non-member functions

istream& 运算符>> (istream& is, char& c)

【讨论】:

  • 另见 § 27.7.2.2.3/11。
【解决方案2】:

here 所述,operator&gt;&gt; 也被实现为 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 2011-01-09
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多