write read open ejemplo c++ file fopen ifstream

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.