在cin
或basic_istream<char>
的实例中,istream
对象如何接受不同的类型?
它不应该只接受char
吗?还是仅使用>>
运算符接受它们?如果它接受所有基本类型,为什么basic_istream
及其伴随模板类呢?
答案 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
函数已重载,因此可以用来提取各种不同的类型。