Ir para conteúdo
Fórum Script Brasil
  • 0

PROBLEMAS COM LEITURA DE DADOS DE ARQUIVO.TXT


fernandodsb

Pergunta

#include <iostream>
#include <fstream> // ofstream e ifstream
using namespace std;

class DADOS
{
private:
	string  CPF, NOME, ENDERECO, TELEFONE, EMAIL;

public:
	string& getCPF()
	{
		return CPF;
	}

	string& getNOME()
	{
		return NOME;
	}
	
	string& getENDERECO()
	{
		return ENDERECO;
	}

	string& getTELEFONE()
	{
		return TELEFONE;
	}
	
	string& getEMAIL()
	{
		return EMAIL;
	}
	
	void setCPF(string& CPF)
	{
		this->CPF = CPF;
	}

	void setNOME(string& NOME)
	{
		this->NOME = NOME;
	}
	
	void setENDERECO(string& ENDERECO)
	{
		this->ENDERECO = ENDERECO;
	}
	
	void setTELEFONE(string& TELEFONE)
	{
		this->TELEFONE = TELEFONE;
	}
	
	void setEMAIL(string& EMAIL)
	{
		this->EMAIL = EMAIL;
	}
	

	// sobrecarga do operador de inserção de dados <<
	// ostream = output stream
	friend ostream& operator<<(ostream& os, const DADOS& p)
	{
		// escrever cada membro
		os << p.CPF << ";" << p.NOME << ";" << p.ENDERECO << ";" << p.TELEFONE << ";" << p.EMAIL<< "\n";
		return os;
	}

	// sobrecarga do operador de extração de dados >>
	// istream = input stream
	friend istream& operator>>(istream& is, DADOS& p)
	{
		// ler cada membro
		is >> p.CPF >> p.NOME >> p.ENDERECO >> p.TELEFONE >> p.EMAIL;
		return is;
	}
};

char MENU()
{
	char resp;
	system("CLS");
	cout<<"ESCOLHA A OPCAO DESEJADA  DA APLICACAO AGENDA A BAIXO:"<<endl<<endl;
	cout<<"	1 - Inclusao de Novo(s) Contato(s) \n	2 - Exclusao de Contato(s) pelo CPF"<<endl; 
	cout<<"	3 - Consulta de Contato(s) por CPF \n	4 - Alteracao de dados cadastrados (exceto CPF)"<<endl; 
	cout<<"	5 - Listagem de Agenda em Ordem Alfabetica (Nomes) \n	0 - PARA FINALIZAR";
	cout<<"\n\nDIGITE A OPCAO DESEJADA... [ ]\b\b";
	cin >> resp;
	return resp;
}


int main(int argc, char *argv[])
{
	char RSP, OPCAO;
	DADOS dados, D;
	string CPF, NOME, ENDERECO, TELEFONE, EMAIL;
	ofstream agenda;
	ifstream EntAgenda;
	Inicio:
		OPCAO = MENU();
		system("CLS");
	
	switch (OPCAO)
	{
		case '1'://Inclusão de Novo(s) contatos
			cout<<"Inclusao de Novo(s) Contato(s)\n";
			
			agenda.open("C:/Users/Fernando/Desktop/Najela/BancoDadosAgenda.txt", ofstream::app);
			if(agenda.fail())
			{
				cout<<"Erro na abertura de arquivo de BANCO DE DADOS! ";
				exit(1);
			}
		
			cin.ignore();
			cout << "\n\n	- Digite o CPF: ";
			getline (cin,CPF);
			cout<<"\n	- Digite o Nome Completo: ";
			getline (cin,NOME);
			cout << "\n	- Digite o Endereco: ";
			getline (cin,ENDERECO);
			cout << "\n	- Digite o Telefone: ";
			getline (cin,TELEFONE);
			cout << "\n	- Digite o E-mail: ";
			getline (cin,EMAIL); 
			
			dados.setCPF(CPF);
			dados.setNOME(NOME);
			dados.setENDERECO(ENDERECO);
			dados.setTELEFONE(TELEFONE);
			dados.setEMAIL(EMAIL);
			

			agenda << dados;

			agenda.close();
		break;
		
		case '2'://Exclusao de Contato(s) pelo CPF
			cout<<"A OPCAO DESEJADA E 2"; cin.ignore();
		break;
		
		case '3'://Consulta de Contato(s) por CPF
			cout<<"Consulta de Contato(s) por CPF\n";
		break;
		
		case '4'://Alteracao de dados cadastrados
			cout<<"A OPCAO DESEJADA E 4"; cin.ignore();
		break;
		
		case '5'://Litagem de Agenda em Ordem Alfabetica (Nomes)
			cout<<"Litagem de Agenda em Ordem Alfabetica"; 
			
			EntAgenda.open("C:/Users/Fernando/Desktop/Najela/BancoDadosAgenda.txt");

			// verifca se o arquivo existe e se é possível ler
			if(EntAgenda.good())
			{
				while(!EntAgenda.eof())
				{
					EntAgenda >> D; // faz a extração dos dados

					// mostrar os dados
					cout << "\nCPF: " << D.getCPF();
					cout << "\nNOME: " << D.getNOME();
					cout << "\nENDERECO: " << D.getENDERECO();
					cout << "\nTELEFONE: " << D.getTELEFONE();
					cout << "\nEMAIL: " << D.getEMAIL()<< "\n";
					
				}
				EntAgenda.close();
			}
			else
				cout << "Falha ao Abrir o arquivo! \n";
		break;
		
		case '0'://FINALIZA
			 return 0;
		break;
		
		default:
			cout<<"OPCAO INVALIDA\n";
			system("pause");
			goto Inicio;
	}
	
	cout<<"\nAinda tem alguma alteracao pra fazer? (S/N): ";
	cin>>RSP;
	
	if(RSP == 'S' || RSP == 's')
		{system("CLS"); goto Inicio;}
	
	cout<<"\nObrigado! Sua agenda foi atualizada com sucesso!";

	return 0;
}

tenho a seguinte entrada de dados:

12345678911;fernando de souza brito;coimbra;62900000000;fernando1234567@outlook.com
12345678900;paulo vitor ;negrao de lima;62900000000;paulo1234567@outlook.com
quando faço a leitura do arquivo, o meu programa para a cada espaço

preciso de ajuda para que consiga ler nas variáveis da função get, os dados até que encontre a separação do " ; " (ponto e virgula)

sendo assim a entrada

CPF = (primeiro campo até o ;)

NOME = (Campo completo com espaços para caso de nome composto)

alguém me ajuda?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...