微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

程序跳过第一个 getline

如何解决程序跳过第一个 getline

这是我的funcoes.h,我保存我的功能,我的问题出在这一行cout 我的程序只是跳过下一个 getline();我无法读取用户输入。 looks like this

一个 getline() 工作正常,所以我不知道问题出在哪里。

#ifndef FUNCOES_H_INCLUDED
#define FUNCOES_H_INCLUDED
#include "Estruturas.h"
#include <string.h>

using namespace std;

void cadastroInsumos(tVacina vacinas[],tMedicamento medicamento[],tEPI EPIs[])
{
    int casee,i;

    cout << "Qual insumo voce deseja cadastrar?\n" << endl;
    cout << "[1] - Vacina" << endl;
    cout << "[2] - Medicamento" << endl;
    cout << "[3] - EPI" << endl;
    cout << "-----------------------------------------" << endl;

    cin >> casee;

    system("CLS");

    if (casee == 3)
    {
        tEPI epi;
        cout << "Digite o tipo de EPI a ser cadasTrado: \n";
        getline(cin,epi.tipo);
        cout << "Digite o nome do EPI a ser cadasTrado: \n";
        getline(cin,epi.dadosEPI.nome);
        cout << "Digite o valor unitario: \n";
        cin >> epi.dadosEPI.valorUnitario;
        cout << "Digite a quantidade de itens: \n";
        cin >> epi.dadosEPI.qItens;
        cout << "Digite a data de vencimento: \n";
        cin >> epi.dadosEPI.dataVencimento.dia;
        cin >> epi.dadosEPI.dataVencimento.mes;
        cin >> epi.dadosEPI.dataVencimento.ano;
        cout << "Digite o nome do fabricante: \n";
        cin >> epi.dadosEPI.nomeFabricante;
        cout << "Digite informacoes detalhadas sobre o EPIs: \n";
        cin >> epi.detalhesEPI;

        EPIs[1] = epi;

        system("CLS");
    }
}

/*void criarVacinas(tVacina vacinas[])
{

}

void criarMedicamentos(tMedicamento medicamento[])
{

}

void criarEPIs(tEPI EPIs[])
{

}*/

#endif // FUNCOES_H_INCLUDED

我的主要看起来像这样

#include <iostream>
#include <string>
#include "Estruturas.h"
#include "Funcoes.h"

using namespace std;

int main()
{
    int casee;
    tVacina vacinas[10];
    tMedicamento medicamentos[10];
    tEPI EPIs[10];

    cout << "------UFPB 2021 - ENGENHARIA DE COmpuTACAO - PROJeto POO------" << endl;
    cout << "Grupo: Leonardo Chianca,Savio Nazario e Yuri Fernandes\n" << endl;
    cout << "------Bem-vindo ao Sistema de Gerenciamento de insumos------\n" << endl;

    while(true)
    {
        cout << "Digite o numero correspondente a operacao que deseja executar: \n" << endl;

        cout << "[0] - Fechar Sistema" << endl;
        cout << "[1] - Cadastro de Insumos no estoque do MS" << endl; //vacinas,medicamentos e EPIs
        cout << "[2] - Consulta de Insumos disponiveis no estoque do MS" << endl;
        cout << "[3] - Consulta da descricao de Insumos disponiveis no estoque do MS" << endl; //Informacoes sobre seus atributos
        cout << "[4] - Consulta de Insumos disponiveis no estoque do MS por tipo" << endl; //vacina,medicamentos e EPIs
        cout << "[5] - Consulta de Insumos distribuidos para os estados" << endl;
        cout << "[6] - Consulta da descricao de Insumos disponiveis nos Estados" << endl; //Informacoes sobre seus atributos
        cout << "[7] - Consulta de Insumos disponiveis no estoque dos Estados por tipo" << endl; //Vacinas,medicamentos e EPIs
        cout << "[8] - Consulta de Insumos disponiveis no estoque por Estado" << endl; //Estado passado como paramentro
        cout << "[9] - distribuir Insumos entre Estados\n" << endl; //O parametro deve ser o estado + o tipo de insumo que saira do estoque do MS
        cout << "---------------------------------------------------------------------------" << endl;

        cin >> casee;

        system("CLS");

        switch(casee)
        {
            default: return 0;
                break;

            case 1: cadastroInsumos(vacinas,medicamentos,EPIs);
                break;

            case 2:
                break;

            case 3:
                break;

            case 4:
                break;

            case 5:
                break;

            case 6:
                break;

            case 7:
                break;

            case 8:
                break;

            case 9:
                break;
        }

    }
}

解决方法

是因为这行:

cin >> casee;

这一行将一个数字读入变量“casee”。

但是,不会读取数字后输入的换行符 '\n'

然后,待处理的换行符由以下 getline 读取:

getline(cin,epi.tipo);

然后,epi.tipo 被分配了一个 "\n" 值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。