es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mi función getline no parece estar funcionando.

Disculpa, todavía soy principiante en la programación.

Tengo esto incluido en el bloque de código.

#include <iostream>
#include <string>
#include <fstream>

Básicamente, estoy intentando crear una función que almacenará línea por línea los datos en una estructura con 4 arreglos de [200]. Aquí está mi código:

struct AccountInfo {
    string account[200];
    int pin[200];
    string name[200];
    long double amount[200];
};

AccountInfo storeAccount(AccountInfo tabs[]) {
    ifstream myfile;
    myfile.open("AccountInfo.txt");
    for (int i = 0; i < myfile.eof(); i++)
    {
     getline(myfile, tabs[i].account);
     getline(myfile, tabs[i].pin);
     getline(myfile, tabs[i].name);
     getline(myfile, tabs[i].amount);
    }
}

Todas mis getline tienen este mensaje de error “Error (active) E0304 no se encuentra ninguna instancia de la función sobrecargada “getline” que coincida con la lista de argumentos.”

¡Si alguien puede ayudarme, sería fantástico!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desde el mensaje de error, parece que los argumentos proporcionados para la función getline son incorrectos. La función getline toma dos argumentos: el flujo de entrada y la variable de cadena para almacenar la entrada. En la implementación actual, el segundo argumento es una matriz de enteros (pin) y una matriz de long doubles (amount), lo cual no es compatible con la función getline.

    Para solucionar esto, puedes modificar los tipos de dato de pin y amount a string y luego convertirlos a enteros y long doubles, respectivamente, utilizando las funciones stoi y stold. Aquí está el código modificado:

    struct AccountInfo {
        string account[200];
        string pin[200];
        string name[200];
        string amount[200];
    };
    
    AccountInfo storeAccount(AccountInfo tabs[]) {
        ifstream myfile;
        myfile.open("AccountInfo.txt");
        for (int i = 0; i < 200 && getline(myfile, tabs[i].account); i++)
        {
            getline(myfile, tabs[i].pin);
            getline(myfile, tabs[i].name);
            getline(myfile, tabs[i].amount);
    
            tabs[i].pin = to_string(stoi(tabs[i].pin));
            tabs[i].amount = to_string(stold(tabs[i].amount));
        }
        return tabs;
    }
    

    Además, debes asegurarte de manejar cualquier excepción que pueda surgir durante el proceso de conversión para garantizar que el programa no se bloquee.

Comments are closed.