#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?