这是一个重载的>>
运算符函数:
std::istream& operator>>(std::istream& is, std::vector<int>& v){
string s;
if (! (is >> s) )
return is;
...
return is;
}
据我了解, if(! (is >> s))
没有任何意义,因为终端或控制台将等待键盘或其他来源的输入进入 s
。因此 if()
中条件的值最终将是 false
。谁能帮忙?
最佳答案
is >> s
尝试从流 is
中读取字符串 s
。
istream
s operator>>()
返回对 is
的引用。
istream
s operator!()
测试流是否处于无效状态。具体来说,如果已设置流的 badbit 或 failurebit,则返回 true
。
所以,
if (! (is >> s) )
return is;
功能上等同于
is >> s;
if (is.fail()) return is; // is.fail() returns true if failbit or badbit are set
这意味着如果从流中读取字符串失败,该函数会立即返回。请注意,这与到达流末尾不同。
关于c++ - if(!(is >> s)) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366378/