while sirve que para good c++ error-handling ifstream

sirve - C++ ifstream Error Checking



ifstream good c++ (1)

paramFile >> tmp; Si la línea contiene espacios, esto no leerá toda la línea. Si quieres eso usa std::getline(paramFile, tmp); que lee hasta la nueva linea. La comprobación básica de errores se realiza examinando los valores de retorno. Por ejemplo:

if(paramFile>>tmp) // or if(std::getline(paramFile, tmp)) { std::cout << "Successful!"; } else { std::cout << "fail"; }

operator>> y std::getline devuelven una referencia a la secuencia. El flujo se evalúa como un valor booleano que puede verificar después de la operación de lectura. El ejemplo anterior solo se evaluará como verdadero si la lectura fue exitosa.

Aquí hay un ejemplo de cómo puedo hacer tu código:

ifstream paramFile("somefile.txt"); // Use the constructor rather than `open` if (paramFile) // Verify that the file was open successfully { string tmp; // Construct a string to hold the line while(std::getline(paramFile, tmp)) // Read file line by line { // Read was successful so do something with the line } } else { cerr << "File could not be opened!/n"; // Report error cerr << "Error code: " << strerror(errno); // Get some info as to why }

Soy nuevo en C ++ y quiero agregar la verificación de errores a mi código y quiero asegurarme de que estoy usando buenas prácticas de codificación. Leí una línea de un archivo ASCII en una cadena usando:

ifstream paramFile; string tmp; //open input file tmp.clear(); paramFile >> tmp; //parse tmp

  1. ¿Cómo puedo verificar los errores para asegurarme de que la lectura del archivo de entrada fue exitosa?

  2. Estoy viendo formas mucho más complicadas de leer desde un archivo ASCII. ¿Es la forma en que lo hago "segura / robusta"?