Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: phantomphiniss en 1 Mayo 2020, 01:56 am



Título: error en lectura de un txt en c++
Publicado por: phantomphiniss en 1 Mayo 2020, 01:56 am
Buenas

tengo duda en el código ya que me esta marcando que el identificador getline no esta definido, a continuación coloco el código:

Código
  1. void reglas()
  2. {
  3.    ifstream archivo;
  4.    string leer;
  5.    archivo.open("reglas.txt", ios::in);
  6.    while (!archivo.eof())
  7.    {
  8.  
  9.        getline(archivo,leer);
  10.        cout << leer << endl;
  11.    }
  12.    archivo.close();
  13. }

Mod: Los códigos van entre etiquetas GeSHi.


Título: Re: error en lectura de un txt en c++
Publicado por: @XSStringManolo en 1 Mayo 2020, 02:25 am
Pon el error exacto. getline está definido en la biblioteca std string. #include <string>


Título: Re: error en lectura de un txt en c++
Publicado por: RayR en 2 Mayo 2020, 00:40 am
Pon algo más de código. En especial los #include y las directivas o declaraciones using que tengas.

Al margen de eso, leer archivos de la manera en que lo estás haciendo está mal. eof() sólo es true después de que se ha intentado leer más allá del fin del archivo. Por lo tanto, tu último getline puede fallar, lo cual hará que la variable leer no tenga un valor válido. De hecho, esto sucederá siempre que tengas un archivo de texto que termine con un caracter de nueva línea.

Aquí una forma correcta de leerlo:

Código
  1. while (getline(archivo, leer)) {
  2.    cout << leer << endl;
  3. }

De esa manera, si getline no fue capaz de leer datos (ya sea porque se llegó al fin del archivo o por otra razón), salimos del bucle.