Reading and saving information (C ++)

0

Good afternoon.

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

Here is what I've done ... save records of a new driver in the file "driver.txt".

    #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:

Output:

I'm a beginner in C ++ and I'm not sure what the error is. Someone clarify me, please.

    
asked by anonymous 16.04.2017 / 01:56

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 the numeric values. If you are using a compiler compatible with C ++ 11/14, you can convert it to std :: to_string:

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

Note: I do not understand why you are reading the integer values with getline. Would not it be better to use std :: cin directly?

int valor;
cin >> valor;

Or do you declare all variables as a string at once?

    
16.04.2017 / 07:21