TransWikia.com

Tengo una duda, al momento de leer un archivo de texto en c++ (ifstream)

Stack Overflow en español Asked on December 16, 2021

Cuando voy visualizar los datos que capture en un archivo txt en c++, al iniciar el bucle no me abría correctamente y me guiaron diciéndome que: Tenia que leer primero la primer variable que haya capturado y después iniciar el bucle, y seguido leer las demás variables y una vez terminado de imprimir en pantalla todo, cerrar leyendo la primera variable.

Mi duda es por qué se hace esto?

Aquí una parte de mi código donde esta la que comente:

        ver>>nombre;
        while(!ver.eof()){
            ver>>codigo;
            ver>>precioxunidad;
            ver>>unidadtotal;
            ver>>preciototal;

            cout<<"n>>Nombre: "<<nombre<<endl;
            cout<<">>Codigo: "<<codigo<<endl;
            cout<<">>Precio Por Unidad: "<<precioxunidad<<endl;
            cout<<">>Unidades Totales: "<<unidadtotal<<endl;
            cout<<">>Precio Total: "<<preciototal<<endl;
            cout<<"........................"<<endl<<endl;;

            ver>>nombre;
    }
        ver.close();}

Aqui la funcion en la que hice la lectura:

void verarticulos (ifstream &ver)
{

    system("cls");
    string nombre;
    string codigo;
    string precioxunidad;
    string unidadtotal;
    string preciototal;

    ver.open("Inventario.txt", ios::in);
    cout<<"ttt********************************"<<endl;
    cout<<"ttt*   REGISTROS DEL INVENTARIO   *"<<endl;
    cout<<"ttt********************************"<<endl<<endl<<endl;

    if(ver.is_open()){
        ver>>nombre;
        while(!ver.eof()){
            ver>>codigo;
            ver>>precioxunidad;
            ver>>unidadtotal;
            ver>>preciototal;

            cout<<"n>>Nombre: "<<nombre<<endl;
            cout<<">>Codigo: "<<codigo<<endl;
            cout<<">>Precio Por Unidad: "<<precioxunidad<<endl;
            cout<<">>Unidades Totales: "<<unidadtotal<<endl;
            cout<<">>Precio Total: "<<preciototal<<endl;
            cout<<"........................"<<endl<<endl;;

            ver>>nombre;
    }
        ver.close();}
    else{
        cout<<"Error."<<endl;
        cout<<"El archivo no se puedo abrir."<<endl;
    }
    system("pause");
}
    ```

One Answer

La lectura de nombre se hace porque eof() sólo será verdadero si ha habido una lectura y se ha llegado al final del fichero. Si después de leer no es el final, se comienza el bucle.

La lectura de nombre al final es para leer el siguiente bloque. Igual, si se ha llegado al final del archivo el bucle termina.

Answered by Manuel on December 16, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP