Looking at istream documentation, you will see that there is no implementation of function istream &operator>>( char& ), but if you compile and run the code below, it will work just as expected.

#include<iostream>

int main( ) {

  char c;

  std::cin >> c;

  std::cout << c << std::endl;

  return( 0 );

}

Given cin is an object for class istream, which specialization of operator>> is called when std::cin >> c; is executed?

有帮助吗?

解决方案

operator>> also is implemented as non-member functions.

istream& operator>> (istream& is, char& c)

其他提示

As stated here, operator>> is also implemented as non-member-function of cin.

Non-member function :

istream& operator>>( istream& st, char& ch );

There is always the standard stated it explicitly in the section § 27.7.2.2.3 :

27.7.2.2.3 basic_istream::operator>> [istream::extractors]

11/ Returns: 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top