• 0
Sign in to follow this  
fernandodsb

PROBLEMAS COM LEITURA DE DADOS DE ARQUIVO.TXT

Question

#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;[email protected]
12345678900;paulo vitor ;negrao de lima;62900000000;[email protected]
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?

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this