我刚刚在这个答案中发现了一条评论说iostream::eof在循环条件下使用"几乎肯定是错误的".我通常使用类似的东西while(cin>>n)- 我猜是隐式检查EOF,为什么检查eof显式使用while (!cin.eof())错误?
它与scanf("...",...)!=EOF在C中使用有何不同(我经常使用没有问题)?
我想有一个简单的方法来检查对象是否有效.我想到了一个简单的转换函数,如下所示:
operator bool() const { return is_valid; }
Run Code Online (Sandbox Code Playgroud)
检查它是否有效现在非常简单
// is my object invalid?
if (!my_object) std::cerr << "my_object isn't valid" << std::endl;
Run Code Online (Sandbox Code Playgroud)
这被认为是一种好习惯吗?