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
¿Cómo puedo verificar los errores para asegurarme de que la lectura del archivo de entrada fue exitosa?
Estoy viendo formas mucho más complicadas de leer desde un archivo ASCII. ¿Es la forma en que lo hago "segura / robusta"?