【发布时间】:2021-12-31 16:10:21
【问题描述】:
创建我自己的 cin & cout 有点毫无意义,所以我只是好奇如何。 我知道 cin 和 cout 是 istream/ostream 类的实例;但是,我尝试了一些声明,例如“std::istream mycin” 但没用。
另外,我看了很多帖子说cin和cout是全局变量,但是我们必须通过std::cin或者std::cout来访问它们。我的理解是全局变量是在全局范围内声明的变量,但 cin 和 cout 显然在 std 命名空间中。我的哪一部分知识是错误的?谢谢。
【问题讨论】:
-
如果我尝试回答您关于创建自己的 cin 和 cout 的问题,我如何知道我是否成功?例如,
auto & my_cin = std::cin;是可接受的答案吗?实际上你甚至没有问过这个问题,那么你具体想知道什么? -
@DavidGrayson 我想知道如何创建我自己的 cin/cout 对象,这样我就可以使用“mycin >> string”来像“cin >> string”一样发挥作用。
-
这里的“全局变量”实际上是指“命名空间范围”,而不是也称为文件范围的全局命名空间范围。
cout和cin是全局的,因为它们不限于单个函数或类或块,但它们不是全局命名空间的成员。请参阅namespace scope 了解更多信息。 -
@DavidGrayson 对不起,我是 C++ 的初学者,只是学习类的概念。既然我可以通过“someClass myInstance;”创建某个类的实例,为什么我不能通过“std::istream mycin”创建自己的 cin?
-
@NathanPierson 谢谢,你的解释让我明白了!