Read and save information (C++)

Asked

Viewed 339 times

0

Good afternoon.

I am developing a project whose goal is to manage the drivers of a mobility company.

Here’s what I’ve done... keep records of a new driver in the "driver.txt file".

    #include <fstream>
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    fstream archivo("condutor.txt"); //arquivo de texto onde se armazena a informacao

    int idunico; //numero identificador unico
    string nome; //nome do condutor
    int horas_dia; //numero de horas consecutivas que pode conduzir por dia (turno)
    int horas_semana; //numero maximo de horas que pode conduzir por semana
    int horas_descanso; //numero minimo de horas de descanso obrigatorio entre turnos
    int op1; //introduzir novo registo
    int op2; //sair

    do {
        cout << "1) Novo resgisto de condutor" << endl;
        cout << "2)Sair" << endl;
        cin >> op1;
        cin.ignore();

        if (op1 == 1)
        {
            if (!archivo.is_open())
            {
                archivo.open("condutor.txt", ios::out);
            }

            cout << "Numero identificador unico: ";
            getline(cin, idunico);
            cout << "Nome do condutor: ";
            getline(cin, nome);
            cout << "Numero de horas consecutivas que pode conduzir por dia (turno): ";
            getline(cin, horas_dia);
            cout << "Numero maximo de horas que pode conduzir por semana: ";
            getline(cin, horas_semana);
            cout << "Numero minimo de horas de descanso obrigatorio entre turnos: ";
            getline(cin, horas_descanso);

            cout << "1) Guardar registo de condutor.";
            cout << "2) Regressar";
            cin >> op2;

            if (op2 == 1)
            {
                archivo << idunico << " ; " << nome << " ; " << horas_dia << " ; " << horas_semana << " ; " << horas_descanso << endl;
                system("cls");

                cout << "Registo de condutor guardado com sucesso!\n";
                system("pause");
                system("cls");
            }
            archivo.close();
        }

    }while (op1 != 2);

    return 0;
}

Error list: inserir a descrição da imagem aqui

Output: inserir a descrição da imagem aqui

I’m a beginner in C++ and I don’t understand what the mistake is. Someone enlighten me, pf.

1 answer

0


First, you forgot the string header:

 #include <string>

Second, the problem is that "getline" only accepts strings. You first need to convert numerical values. If you are using a C++11/14 compliant compiler, you can convert with Std::to_string:

cout << "Numero identificador unico: ";
getline(cin, to_string(idunico));

Note: I didn’t understand why you are reading the integer values with getline. It wouldn’t be better to use Std::Cin directly ?

int valor;
cin >> valor;

Or else declare all variables as string right away ?

  • Thank you very much. It worked.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.