问题描述
这是我的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"
值。