char
之外,istream::operator>>有一个重载,可以写入任何类型的变量。那是为什么?
答案 0 :(得分:3)
std::istream
和std::ostream
都有两组重载。数字类型,操纵器类型和缓冲区的定义为成员函数,而基于字符的I / O的定义为全局函数。除了基于字符的重载之外,还有不同标准类的重载,例如std::string
和std::complex
。您自己甚至可以为不同的自定义类实现不同的重载。
答案 1 :(得分:1)
operator>>
有non-member和member次重载。您正在寻找的char重载是函数模板,而成员重载是非模板化的。例如:
template< class CharT, class Traits >
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>& st, CharT& ch );