为什么 istream::operator>> 没有占用字符的重载?



istream::operator>>有一个重载,它接受除char之外的任何类型的变量进行写入。为什么?

std::istreamstd::ostream都有两组重载。数值类型、操纵器类型和缓冲区的定义为成员函数,而基于字符的I/O的定义为全局函数。除了基于字符的重载之外,还有针对不同标准类(如std::stringstd::complex)的重载。您自己甚至可以为不同的自定义类实现不同的重载。

operator>>存在非成员和成员重载。您要查找的char重载是函数模板,而成员重载是非模板的。例如:

template< class CharT, class Traits >
basic_istream<CharT,Traits>& operator>>( basic_istream<CharT,Traits>& st, CharT& ch );

相关内容

  • 没有找到相关文章

最新更新