Olá, tenho este exercício de map para resolver, o código está tudo certo, menos a parte de ler arquivo! Consigo gravar normalmentel, mas na hora de ler o arquivo gerado em bloco de notas para o executável não tem jeito.
Gostaria apenas de arrumar a classe ler_jogador(), para trazer de forma correta as informaçoes do bloco de notas gerado, pois não consigo ler para o programinha que é bem simples
#include<cstdlib>#include<iostream>#include<fstream>#include<map>#include"func_pessoa.h"#include<sstream>#include<string.h>usingnamespace std;map<string,pessoa> map_escalacao;map<string,pessoa>::iterator it;void gravar_jogador(){
fstream arq;char arquivo_char[80];
string arquivo_ler;
std::stringstream Resultado;
arquivo_ler ="dados_jogador"+Resultado.str()+".txt";
strcpy(arquivo_char, arquivo_ler.c_str());
arq.open(arquivo_char, ios::out | ios::app);for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){
arq << it->first <<"\t"<< it->second.getnome()<<"\n";}
cout <<"Gravando..."<< endl;
cout <<"Dados gravados com sucesso em dados_jogador"<<Resultado.str()<< endl;
arq.close();}void ler_jogador(){
string chave, nome;
fstream arq("dados_jogador.txt",ios::in);if(arq.fail()==1){
cout <<"O arquivo a ser lido não esta gravado em disco"<< endl;return;}int i =0;while(!arq.eof()){
arq >> chave >> nome;
map_escalacao[chave]= pessoa(num,nome);}
arq.close();//apresenta os dados do arquivo//for(int i = 0; i < 3; i++){// pList[i].imprimir();// }void menu(){
system("cls");//limpa os dados do console
cout <<"---- ESCALACAO PROSPERA E.C ----\n\n"<< endl;
cout <<"1 - Limpar escalacao"<< endl;//
cout <<"2 - Inserir jogador"<< endl;//
cout <<"3 - Remover pelo numero"<< endl;
cout <<"4 - Remover pelo nome do jogador"<< endl;
cout <<"5 - Localizar pelo numero"<< endl;
cout <<"6 - Localizar pelo nome"<< endl;
cout <<"7 - Listar jogadores"<< endl;
cout <<"8 - GRAVAR"<< endl;
cout <<"0 - Sair"<< endl;}int main(){
ler_jogador();int opcao,subst;bool nr_localizado;
string num,nome;while(true){
menu();
cout <<"\nNumero da acao desejada:";
cin >> opcao;//define a escolha do usuárioif(opcao ==0){break;}elseif(opcao ==1){
map_escalacao.clear();}elseif(opcao ==2){//solicita ao usuários os dados
cout <<"Nome: ";
cin >> nome;
cout <<"Numero: ";
cin >> num;//verifica se o número do telefone já existe no mapa
it = map_escalacao.find(num);if(it != map_escalacao.end()){
cout <<"O numero informado já esta na escalaçao"<< endl;
cout <<"1 - Substituir\n2 - Cancelar\nOpcao: "<< endl;
cin >> subst;if(subst !=1){//o dado não será substituido continue;}}//insere o dado no mapa, se existir, irá substituir
map_escalacao[num]= pessoa(nome);}elseif(opcao ==3){
cout <<"Desconvocar numero: ";
cin >> num;int nrDel = map_escalacao.erase(num);if(nrDel >0){
cout <<"O Jogador foi Desconvocado"<< endl;}else{
cout <<"O Jogador não existe"<< endl;}}elseif(opcao ==4){
cout <<"Nome a desconvocar: ";
cin >> nome;if(!map_escalacao.empty()){
nr_localizado =false;for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){if(nome == it->second.getnome()){
it->second.imprimir();
cout <<"Desconvocando..."<< endl;
map_escalacao.erase(it->first);
nr_localizado =true;break;}}if(!nr_localizado){
cout <<"O "<< nome <<" não foi localizado"<< endl;}}else{
cout <<"A escalacao não possui jogadores"<< endl;}}elseif(opcao ==5){
cout <<"Numero a localizar: ";
cin >> num;
it = map_escalacao.find(num);if(it != map_escalacao.end()){
cout <<"Dados jogador"<< endl;
it->second.imprimir();}else{
cout <<"Numero não encontrado"<< endl;}}elseif(opcao ==6){
cout <<"Nome: ";
cin >> nome;if(!map_escalacao.empty()){
nr_localizado =false;for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){if(nome == it->second.getnome()){
cout <<"Dados jogador"<< endl;
it->second.imprimir();
nr_localizado =true;break;}}if(!nr_localizado){
cout <<"O "<< nome <<" não foi localizado"<< endl;}}else{
cout <<"A escalacao não possui jogadores convocados"<< endl;}}elseif(opcao ==7){if(!map_escalacao.empty()){
cout <<"Jogadores: "<< endl;for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){
cout <<"Numero: "<< it->first;
it->second.imprimir();
cout <<""<< endl;}}else{
cout <<"A escalacao não possui jogadores"<< endl;}}elseif(opcao ==8){
gravar_jogador();}else{
cout <<"A opcao informada e invalida"<< endl;}
system("PAUSE");}//#end whilereturn0;}
resto do programa
#include<string>#include<iostream>usingnamespace std;//declaração da classe pessoaclass pessoa{private:
string nome;public:
pessoa();
pessoa(string nome);~pessoa();
string getnome();void setnome(string nome);void imprimir();};//implementação das funções da classe pessoa
pessoa::pessoa(){}
pessoa::pessoa(string nome){this->nome = nome;}
pessoa::~pessoa(){}
string pessoa::getnome(){return nome;}void pessoa::setnome(string nome){this->nome = nome;}//apresenta os dados da pessoa no consolevoid pessoa::imprimir(){
cout <<" Nome: "<< nome << endl;}
Pergunta
jfmacarini
Olá, tenho este exercício de map para resolver, o código está tudo certo, menos a parte de ler arquivo! Consigo gravar normalmentel, mas na hora de ler o arquivo gerado em bloco de notas para o executável não tem jeito.
Gostaria apenas de arrumar a classe ler_jogador(), para trazer de forma correta as informaçoes do bloco de notas gerado, pois não consigo ler para o programinha que é bem simples
resto do programa
Desculpe a péssima formatação
Editado por jfmacariniformatação
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.