cin对象如何接受不同类型

时间:2018-06-27 06:12:28

标签: c++ templates cin istream

cinbasic_istream<char>的实例中,istream对象如何接受不同的类型? 它不应该只接受char吗?还是仅使用>>运算符接受它们?如果它接受所有基本类型,为什么basic_istream及其伴随模板类呢?

1 个答案:

答案 0 :(得分:3)

std::basic_istream<CharT, Traits>对类型为CharT的字符输入流进行建模。它提供了对该输入流的相对较低级别和相对较高级别的访问。例如,您可以调用std::cin.get()以便从输入流中检索下一个字符。这将始终返回CharT,因为这是流中底层的字符类型。但是,basic_istream还提供了格式化的输入函数,其目的是将字符流解释为某种类型的编码,可能是int,{{1} }, 或者是其他东西。因此,虽然流不由std::basic_string<CharT, Traits>组成,但是有一个int通过从operator>>流中连续读取数字并将它们解释为数字来提取int值。以10为基的整数表示。 char函数已重载,因此可以用来提取各种不同的类型。