我的问题是如何,
while(cin>>x)
{
//code
}
工作。或者更具体地说,该代码会停止循环怎么办?
从这里的文档中,看起来 >> 运算符返回一个&istream
. 这是否意味着如果读取失败或到达文件末尾,它不仅会设置 eofbit、failbit 或 badbit,还会返回 null?这真的没有意义,所以我怀疑就是这样。
是否有某种对 eofbit 的隐式检查?
我问是因为我希望用 2 个这样的类来实现类似的东西,
class B
{
//variables and methods
}
class A
{
//Variables and methods
//Container of B objects. ex. B[] or vector<B> or Map<key,B>
&A >> (B b);
}
int main()
{
A a;
B b;
while( a >> b)
{
//Code
}
}
注意:我不希望继承自,istream
除非它是使这项工作的魔力来自的地方。这样做的原因是我希望使类及其依赖项尽可能小。如果我从那里继承,istream
我将收到它所有的公共和受保护的东西,我不会试图创建一个istream
类似的对象。我只想复制一个非常好的片段。
编辑:我正在使用 Visual Studio 2010,(这变得非常痛苦),我需要一些与它的 C++03 + 一些 C++11 的实现兼容的东西。