2016-04-14 9 views
-1

Im folgenden CodeWas bedeutet, wenn (fstreamTest) überprüfen? Wird nach einer bestimmten Flagge gesucht?

fstream testFile; 
testFile.open("test.txt", ios::in); 

if (testFile) 
cout << "This if statement is true"; 

Was C, um den Check nicht ++ true von if(testfile) zurückzukehren? Wird überprüft, ob testFile.goodbit() wahr ist?

+1

http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool –

+1

http://www.cplusplus.com/reference/ios/ios/operator_bool/ – ForceBru

Antwort

2

Sie können die Definitionen nachschlagen ... http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool oder http://www.cplusplus.com/reference/ios/ios/operator_bool/ wie erwähnt. Am Ende ruft es eine Methode für die Klasse fstream auf, die true oder false zurückgibt.

Die Dokumentation über die Methode sagt:

Returns true if the stream has no errors occurred and is ready 
of I/O operations. Specifically, returns !fail() 

Eine andere Version der Dokumentation sagt:

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. 
3

Was bedeutet C um ++ zu überprüfen true zurück aus if (testdat)?

Von cppreference:

überprüft, ob der Strom keine Fehler hat.

1) Gibt einen Null-Zeiger zurück, wenn fail() Wahr zurückgibt, andernfalls einen Nicht-Null-Zeiger zurückgibt. Dieser Zeiger ist implizit in bool konvertierbar und kann in booleschen Kontexten verwendet werden. (bis C++11)

2) Gibt true zurück, wenn der Stream keine Fehler aufweist und für E/A-Vorgänge bereit ist. Insbesondere wird !fail() zurückgegeben. (Da C++11)

1) operator void*() const; (bis C++ 11)
2) explicit operator bool() const; (seit C++ 11)

Wenn der Stream keine Fehler hat es kehrt true, andernfalls wird false zurückgegeben.

Dies macht es möglich, Dinge zu tun, wie:

while(stream >> value) { 
    ... 
} 
+0

Sollte erwähnen, dass 1) gilt bis C++ 11 und 2) darüber hinaus –

Verwandte Themen