在以下代码中
fstream testFile;
testFile.open("test.txt", ios::in);
if (testFile)
cout << "This if statement is true";
C ++检查什么才能从true
返回if(testfile)
?
是否检查testFile.goodbit()
是否为真?
答案 0 :(得分:3)
为了从if(testfile)返回true,C ++检查了什么?
来自cppreference:
检查流是否没有错误。
1)返回空指针iffail()
返回true,否则返回非空指针。这个 指针可以隐式转换为bool
,可以在布尔值中使用 上下文。 (直到C++11
)
2)如果流没有错误并准备好,则返回true
I / O操作。具体来说,返回!fail()
。 (自C++11
)
1)operator void*() const;
(直到 C ++ 11)
2)explicit operator bool() const;
(自 C ++ 11)
如果流没有错误,则会返回true
,否则会返回false
。
这使得可以执行以下操作:
while(stream >> value) {
...
}
答案 1 :(得分:2)
如上所述,您可以查找定义... http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool或http://www.cplusplus.com/reference/ios/ios/operator_bool/。最后,它在fstream类上调用一个返回true或false的方法。
该方法的文档说:
Returns whether an error flag is set (either failbit or badbit).
Notice that this function does not return the same as member good,
but the opposite of member fail.
该文档的另一个版本说:
var headlineStore = [
function headline1(){
//irrelevant code
},
function headline2(){
//irrelevant code
},
function headline4(){
//irrelevant code
},
function headline4(){
//irrelevant code
},
function headline5(){
//irrelevant code
}
]
for(var i = 0; i < headlineStore.length; i++){ //for loop to loop through array named headlineStore
if(i == 4) //if condition to reset the counter once it reaches 5
{
i = 0;
}
(function(i){
setTimeout(function(){
headlineStore[i]();
}, 5000 * i);
}(i)); //Will load each function in the array with timeout increments
}