Manipulação de arquivos em C++
Neste breve artigo faço uma apresentação do conceito de arquivos, como o sistema operacional os encara, em especial em sistemas Linux e como é sua manipulação em C++, com códigos de exemplo de leitura e/ou gravação dos mesmos.
Parte 6: Exemplo de gravação - (ofstream) - Gravando vários registros
#include <fstream.h>
#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;
class alunos{
private:
int ra;
char nome[50];
public:
alunos();
void cadastra();
};
alunos :: alunos(){
ra = 1;
strcpy(nome,"");
}
void alunos :: cadastra(){
cout << "Digite o RA: " << endl;
cin >> ra;
cout << "Digite o nome: "<< endl;
cin >> nome;
}
int main(){
int i;
//Aqui criamos o objeto 'fgrava', que faz referência ao objeto aluno.txt
ofstream fgrava("alunos.txt");
//Aqui criamos o objeto 'cad1' usando a classe 'alunos'.
alunos cad1;
cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl;
cin >> i;
while(i!=0){
cad1.cadastra();//Lemos os dados com a função 'cadastra()'.
fgrava.write( (char *)&cad1, sizeof(alunos));//Aqui gravamos o conteúdo do objeto 'cad1' em 'alunos.txt'.
//Usamos 'sizeof(alunos)' neste caso, para informar o tamanho do registro e posteriormente grava -lo no arquivo.
cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl;
cin >> i;
}
}
#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;
class alunos{
private:
int ra;
char nome[50];
public:
alunos();
void cadastra();
};
alunos :: alunos(){
ra = 1;
strcpy(nome,"");
}
void alunos :: cadastra(){
cout << "Digite o RA: " << endl;
cin >> ra;
cout << "Digite o nome: "<< endl;
cin >> nome;
}
int main(){
int i;
//Aqui criamos o objeto 'fgrava', que faz referência ao objeto aluno.txt
ofstream fgrava("alunos.txt");
//Aqui criamos o objeto 'cad1' usando a classe 'alunos'.
alunos cad1;
cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl;
cin >> i;
while(i!=0){
cad1.cadastra();//Lemos os dados com a função 'cadastra()'.
fgrava.write( (char *)&cad1, sizeof(alunos));//Aqui gravamos o conteúdo do objeto 'cad1' em 'alunos.txt'.
//Usamos 'sizeof(alunos)' neste caso, para informar o tamanho do registro e posteriormente grava -lo no arquivo.
cout << "Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar." << endl;
cin >> i;
}
}
Resultado esperado do código acima:
Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar.
1
Digite o RA:
23445
Digite o nome:
Lais
Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar.
1
Digite o RA:
767553
Digite o nome:
Joao
Deseja cadastrar um aluno? Tecle 0(zero) para sair e 1 para confirmar.
0
Você foi bem objetivo, mesmo eu sem grandes conhecimentos de C++ entendi tudo !
Até mais .