2013-01-18 11 views

Odpowiedz

11

jego faktycznie jak (jeśli nie więcej) prosty:

ifstream ifs(filename); 
int a, b; 
if (!(ifs >> a >> b)) 
    cerr << "failed"; 

przyzwyczaić do tego formatu, na drodze. jak jest w stanie bardzo poręczny (jeszcze bardziej - tak dla kontynuowania pozytywny przejście przez pętle).

3

Jeśli jeden”za pomocą GCC z -std=c++11 lub -std=c++14 może ona napotkać:

error: cannot convert ‘std::istream {aka std::basic_istream<char>}’ to ‘bool’ 

Dlaczego? Standardowy kod C++ 11 wykonał bool połączenie operatora jawne (ref). Tak więc jest to niezbędne do korzystania z:

std::ifstream ifs(filename); 
int a, b; 
if (!std::static_cast<bool>(ifs >> a >> b)) 
    cerr << "failed"; 

Osobiście wolę poniżej wykorzystania fail funkcję:

std::ifstream ifs(filename); 
int a, b; 
ifs >> a >> b 
if (ifs.fail()) 
    cerr << "failed"; 
Powiązane problemy