vhbsouza 0 Denunciar post Postado Dezembro 6, 2010 Olá pessoal, Estou com o seguinte problema: Tenho que fazer um programa simples que lê algumas informações do teclado inseridas pelo usuário e no final salva em um arquivo. E se o arquivo já existir ele anexa as novas informações ao final do arquivo. E como eu qro criar um arquivo CSV, precisaria adicionar um ;(ponto e virgula) no fim de cada string lida. Alguém pode me ajudar? As informações são: Nome: Nome do Club: Sócio desde: Data Nascimento: Profissão: Email: Telefone: O que acontece é que pensei em fazer uma classe em C++ com essas informações e usar fstream pra salvar só que não está dando certo :S Ele não salva o arquivo. E tem outro problema, o CIN. Ele só finaliza a string no " "(space), ao invés de ser no '\n'. Alguém pode me ajudar? #include <fstream> #include <cstdlib> #include <string.h> #include <iostream> using namespace std; class Pessoa { private: char nome[80],club[100],tempo[50],nasc[20],prof[30],email[50],fone[20]; public: Pessoa(); void cadastra(); }; Pessoa :: Pessoa() { strcpy(nome,""); strcpy(club,""); strcpy(tempo,""); strcpy(nasc,""); strcpy(prof,""); strcpy(email,""); strcpy(fone,""); } void Pessoa :: cadastra() { cout << "Digite o Nome: " << endl; cin >> nome; cout << "Digite o Club: "<< endl; cin >> club; cout << "Digite seu Tempo de Rotaract: "<< endl; cin >> tempo; cout << "Digite seu Nascimento: "<< endl; cin >> nasc; cout << "Digite sua Profissao: "<< endl; cin >> prof; cout << "Digite seu EMAIL: "<< endl; cin >> email; cout << "Digite seu Telefone: "<< endl; cin >> fone; } int main() { int i; fstream fgrava; fgrava.open("Pessoa.txt", ios::ate | ios::out | ios::in); Pessoa cad1; cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl; cin >> i; while(i!=0) { cad1.cadastra(); fgrava.write((char*)&cad1,sizeof(Pessoa)); cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl; cin >> i; } fgrava.seekg(0); } Aguando uma resposta : ) Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Dezembro 6, 2010 Você está fazendo a gravação em formato binário, logo, o arquivo está armazenando a estrutura toda e não apenas os valores de cada atributo. Para salvar o conteúdo usando a classe, você terá de criar as funções de 'get', e a partir do conteúdo retornado por cada uma dela, adicionar o ';' no final e então salvar em arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
vhbsouza 0 Denunciar post Postado Dezembro 8, 2010 Você está fazendo a gravação em formato binário, logo, o arquivo está armazenando a estrutura toda e não apenas os valores de cada atributo. Para salvar o conteúdo usando a classe, você terá de criar as funções de 'get', e a partir do conteúdo retornado por cada uma dela, adicionar o ';' no final e então salvar em arquivo. E como faço pra gravar só os valores das variaveis em modo texto? Não entendi sobre as funções GET! Compartilhar este post Link para o post Compartilhar em outros sites
ScreenBlack 13 Denunciar post Postado Dezembro 8, 2010 Precisa salvar apenas o conteúdo do atributo usando as funções "GET". Exemplo: class Pessoa { private: char nome[80],club[100],tempo[50],nasc[20],prof[30],email[50],fone[20]; public: Pessoa(); void cadastra(); void setNome(char *); void setClub(char *); char* getNome(); char* getClub(); }; usando as funções 'get*()', retornará o conteúdo do atributo, e será esse valor que você armazenará em arquivo, separando por ';' para montar o arquivo CSV. Compartilhar este post Link para o post Compartilhar em outros sites
vhbsouza 0 Denunciar post Postado Dezembro 8, 2010 Precisa salvar apenas o conteúdo do atributo usando as funções "GET". Exemplo: class Pessoa { private: char nome[80],club[100],tempo[50],nasc[20],prof[30],email[50],fone[20]; public: Pessoa(); void cadastra(); void setNome(char *); void setClub(char *); char* getNome(); char* getClub(); }; usando as funções 'get*()', retornará o conteúdo do atributo, e será esse valor que você armazenará em arquivo, separando por ';' para montar o arquivo CSV. Cara, nao consegui entender esse negócio dos gets mais mesmo assim obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Dezembro 10, 2010 Esse negócio de get e set eu aprendi na faculdade, que eu me lembro é algo assim: Seu código será uma "caixa-preta" digamos, e os unicos modos de capturar valores seram atraves das funções 'getAlgo();', e para armazenar os 'setAlgo();', deve ter ficado meio vago neh kkk. + continua com seu código, e vamos ver oq sai. []s Compartilhar este post Link para o post Compartilhar em outros sites