read - ifstream c++
Leyendo un archivo de texto-fopen vs. ifstream (2)
Búsqueda de archivos en Google Encontré dos formas de ingresar texto desde un archivo: fopen e ifstream. A continuación se presentan los dos fragmentos. Tengo un archivo de texto que consta de una línea con un entero que necesito leer. ¿Debo usar fopen o ifstream?
SNIPPET 1 - FOPEN
FILE * pFile = fopen ("myfile.txt" , "r");
char mystring [100];
if (pFile == NULL)
{
perror ("Error opening file");
}
else
{
fgets (mystring , 100 , pFile);
puts (mystring);
fclose (pFile);
}
SNIPPET 2 - IFSTREAM
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
Como esto está etiquetado como C ++, diré ifstream. Si estuviera etiquetado como C, iría con fopen: P
Preferiría ifstream porque es un poco más modular que fopen. Supongamos que desea que el código que se lee de la secuencia también se lea de una secuencia de cadena, o de cualquier otro istream. Podrías escribirlo así:
void file_reader()
{
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (myfile.good())
{
stream_reader(myfile);
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
}
void stream_reader(istream& stream)
{
getline (stream,line);
cout << line << endl;
}
Ahora puede probar stream_reader
sin usar un archivo real, o usarlo para leer desde otros tipos de entrada. Esto es mucho más difícil con fopen.