Pesquisar na Comunidade
Mostrando resultados para as tags ''texto.c_str''.
Encontrado 1 registro
-
Alguém poderia me ajudar, o programa basicamente é uma adega de vinhos no qual ele tem q cadastrar, listar e buscar no arquivo. O que acontece é o seguinte, eu cadastro um tipo de vinho, e listo ele aparece normal, mais quando eu cadastro um novo vinho ele sobrescreve o que já está cadastrado e assim por diante se eu tenta cadastrar outros. Lembrando que no arquivo deve ser gravado em forma de texto e não em binário, deve se ter a conversão usando c_str, é nessa parte o erro. Se alguém poder me dar uma segunda opinião eu agradeço. Segue abaixo o código: void ListarVinho () o problema! #include <iostream> #include <fstream> #include <locale> #include <cstring> #include <cstdlib> #include <stdlib.h> using namespace std; struct AdegaVinho{ int codigo; char nome [20]; char tipo [10]; char fabricante [20]; int anoFab; char recomendacao [1000]; }; void CadastrarVinho(); void ListarVinho(); void BuscarTipoVinho(); void Fabricante(); void AnoFab(); void BuscarRecomendacaoVinho(); int main() { setlocale(LC_ALL, "Portuguese"); cout << endl; cout << "Sistema de Controle da Adega de Vinhos " << endl; int selecionar; do{ cout << endl; cout << endl; cout << "Selecione qualquer opção listada abaixo no menu: " << endl; cout << "1 - Cadastrar Vinho: " << endl; cout << "2 - Listar Todos" << endl; cout << "3 - Buscar por Tipo" << endl; cout << "4 - Busca por Fabricante" << endl; cout << "5 - Buscar Ano de Fabricação" << endl; cout << "6 - Busca por Recomendação" << endl; cout << "0 - Sair"<<endl; cin >> selecionar; cout << endl; switch (selecionar){ case 1:CadastrarVinho(); break; case 2:ListarVinho(); break; case 3:BuscarTipoVinho(); break; case 4:Fabricante(); break; case 5:AnoFab(); break; case 6:BuscarRecomendacaoVinho(); break; if(selecionar >= 6 || selecionar < 0){ cout << "Opção Inválida, Tente Novamente..."<< endl; } } }while (selecionar != 0); return 0; } AdegaVinho adegavinho; void CadastrarVinho(){ fstream arq; arq.open("dados.txt", ios::in | ios :: out | ios::app); cout << "Código: "; cin >> adegavinho.codigo; cin.ignore(); cout << "Nome: "; gets (adegavinho.nome); cout << "Tipo(Tinto/Rose/Branco): "; gets (adegavinho.tipo); cout << "Fabricante: "; gets (adegavinho.fabricante); cout << "Ano de Fabricação: "; cin >> adegavinho.anoFab; cin.ignore(); cout << "Recomendação: "; gets (adegavinho.recomendacao); cout << endl; arq << adegavinho.codigo; arq << adegavinho.nome; arq << adegavinho.tipo; arq << adegavinho.fabricante; arq << adegavinho.anoFab ; arq << adegavinho.recomendacao; arq.close(); }; void ListarVinho (){ int cont = 0; string texto; fstream arq; arq.open("dados.txt", ios::in | ios:: out); while(arq.good()){ getline(arq, texto);{ // atoi(texto char *str); strcpy(<arraychar>, texto.c_str()); cout << "Código: " << adegavinho.codigo << endl; cout << "Nome: " << adegavinho.nome << endl; cout << "Tipo: " << adegavinho.tipo << endl; cout << "Fabricante: " << adegavinho.fabricante << endl; cout << "Ano de Fabricação: " << adegavinho.anoFab << endl; cout << "Recomendação: " << adegavinho.recomendacao<< endl; cout << endl; cont++; } } if (cont == 0){ cout << endl; cout << "Arquivo Inexistente..."; } arq.close(); }; void BuscarTipoVinho(){ int cont =0; string texto; fstream arq; char tipo[6]; cout << "Informe o tipo do vinho a ser buscado(Tinto/Rose/Branco) " << endl; cin >> tipo; arq.open("dados.txt", ios::in | ios::out); while(arq.good()){ getline(arq, texto);{ if (strcmp(tipo,adegavinho.tipo)==0){ cout << "Código: " << adegavinho.codigo << endl; cout << "Nome: " << adegavinho.nome << endl; cout << "Tipo: " << adegavinho.tipo << endl; cout << "Fabricante: " << adegavinho.fabricante << endl; cout << "Ano de Fabricação: " << adegavinho.anoFab << endl; cout << "Recomendação: " << adegavinho.recomendacao<< endl; cout << endl; cont++; } } } if (cont == 0){ cout << endl; cout << "Arquivo Inexistente..."; } arq.close(); }; void Fabricante(){ int cont =0; string texto; fstream arq; char fabricanteT[20]; cout << "Informe o Fabricante do Vinho: " << endl; cin >> fabricanteT; arq.open("dados.txt", ios::in | ios::out); while(arq.good()){ if (strcmp(fabricanteT,adegavinho.fabricante)==0){ getline(arq, texto);{ cout << "Código: " << adegavinho.codigo << endl; cout << "Nome: " << adegavinho.nome << endl; cout << "Tipo: " << adegavinho.tipo << endl; cout << "Fabricante: " << adegavinho.fabricante << endl; cout << "Ano de Fabricação: " << adegavinho.anoFab << endl; cout << "Recomendação: " << adegavinho.recomendacao<< endl; cout << endl; cont++; } } } if (cont == 0){ cout << endl; cout << "Arquivo Inexistente..."; } arq.close(); }; void AnoFab(){ int cont =0; string texto; fstream arq; int ano; cout << "Informe o Ano de Fabricação do Vinho: "; cin >> ano; arq.open("dados.txt", ios::in | ios::out); while(arq.good()){ if (ano == adegavinho.anoFab){ getline(arq, texto);{ cout << "Código: " << adegavinho.codigo << endl; cout << "Nome: " << adegavinho.nome << endl; cout << "Tipo: " << adegavinho.tipo << endl; cout << "Fabricante: " << adegavinho.fabricante << endl; cout << "Ano de Fabricação: " << adegavinho.anoFab << endl; cout << "Recomendação: " << adegavinho.recomendacao<< endl; cout << endl; cont++; } } } if (cont == 0){ cout << endl; cout << "Arquivo Inexistente..."; } arq.close(); }; void BuscarRecomendacaoVinho(){ int cont =0; string texto; fstream arq; char recomendacaoR[1000]; cout << "Informe a Recomendação a ser Buscada: " << endl; cin >> recomendacaoR; arq.open("dados.txt", ios::in | ios::out); while(arq.good()){ //if (recomendacaoR == adegavinho.recomendacao){ if (strcmp(recomendacaoR,adegavinho.recomendacao)==0){ getline(arq, texto);{ cout << "Código: " << adegavinho.codigo << endl; cout << "Nome: " << adegavinho.nome << endl; cout << "Tipo: " << adegavinho.tipo << endl; cout << "Fabricante: " << adegavinho.fabricante << endl; cout << "Ano de Fabricação: " << adegavinho.anoFab << endl; cout << "Recomendação: " << adegavinho.recomendacao<< endl; cout << endl; cont++; } } } if (cont == 0){ cout << endl; cout << "Arquivo Inexistente..."; } arq.close(); };