Maejo de Archivos en C++

Josi

Lanero Regular
10 Dic 2004
7
Saludos a todos, soy nuevo en el foro, estoy cursando 2º año de ingeniería en sistemas, y el jueves que viene tengo que rendir un final de C++, en el que me tomarían manejo de archivos en C++, tema que no se dió en clase y, la verdad, con el MSDN no logro llegar a ningún lado.

¿Podría alguien decirme adonde puedo encontrar información sobre cómo realizar esto?

Desde ya muchas gracias.

Josi. :calma:
 
No hay problema, Sorrento, acá les paso lo que hice, funciona bien, solo hay que adaptarlo a las necesidades de cada uno.

#include "iostream.h"
#include "fstream.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"

float CalcularPromedio(int primero, int segundo, int tercero)
{
float promedio;
promedio = (float (primero) + float (segundo) + float (tercero)) / 3;
return promedio;
}

typedef struct{
int legajo;
char apellido[15];
char nombre[15];
int nota1;
int nota2;
int nota3;
}Registro;

class Alumno
{
public:
Alumno();
Alumno(int nl, char *ape, char *nom, int n1, int n2, int n3);
virtual ~Alumno();
void legajo(int nl);
void apellido(char *ape);
void nombre(char *nom);
void nota1(int n1);
void nota2(int n2);
void nota3(int n3);
char *verNombre();
char *verApellido();
int verLegajo();
int verNota1();
int verNota2();
int verNota3();
private:
Registro alumno;
};

Alumno::Alumno()
{

}

Alumno::Alumno(int nl, char *ape, char *nom, int n1, int n2, int n3)
{
alumno.legajo = nl;
strcpy(alumno.apellido, ape);
strcpy(alumno.nombre, nom);
alumno.nota1 = n1;
alumno.nota2 = n2;
alumno.nota3 = n3;
}

Alumno::~Alumno()
{

}

void Alumno::legajo(int nl)
{
alumno.legajo = nl;
}

void Alumno::apellido(char *ape)
{
strcpy(alumno.apellido, ape);
}

void Alumno::nombre(char *nom)
{
strcpy(alumno.nombre, nom);
}

void Alumno::nota1(int n1)
{
alumno.nota1 = n1;
}

void Alumno::nota2(int n2)
{
alumno.nota2 = n2;
}

void Alumno::nota3(int n3)
{
alumno.nota3 = n3;
}

int Alumno::verLegajo()
{
return alumno.legajo;
}

char *Alumno::verApellido()
{
char *p = alumno.apellido;
return p;
}

char *Alumno::verNombre()
{
char *p = alumno.nombre;
return p;

}

int Alumno::verNota1()
{
return alumno.nota1;
}

int Alumno::verNota2()
{
return alumno.nota2;
}

int Alumno::verNota3()
{
return alumno.nota3;
}

void main()
{
Alumno alumno1;
Alumno alumno2(2, "Hernandez", "José", 7, 8, 5);
Registro A;
float promedio;
char *token;
char cadena[sizeof(Registro)];
clrscr();
ofstream salida("c:\\temp\\Datos.txt");

if(!salida) cout << "El archivo no existe." << endl;
salida << alumno2.verLegajo() << ";";
salida << alumno2.verApellido() << ";";
salida << alumno2.verNombre() << ";";
salida << alumno2.verNota1() << ";";
salida << alumno2.verNota2() << ";";
salida << alumno2.verNota3() << ";";

salida.close();

cout << "Legajo : " << alumno2.verLegajo() << endl;
cout << "Apellido : " << alumno2.verApellido() << endl;
cout << "Nombre : " << alumno2.verNombre() << endl;
cout << "Primera nota : " << alumno2.verNota1() << endl;
cout << "Segunda nota : " << alumno2.verNota2() << endl;
cout << "Tercera nota : " << alumno2.verNota3() << endl;

ifstream entrada("c:\\temp\\Datos.txt");

entrada.getline(cadena, sizeof(Registro));
token = strtok(cadena, ";");
A.legajo = atoi(token);
alumno1.legajo(A.legajo);
token = strtok(NULL, ";");
strcpy(A.apellido, token);
alumno1.apellido(A.apellido);
token = strtok(NULL, ";");
strcpy(A.nombre, token);
alumno1.nombre(A.nombre);
token = strtok(NULL, ";");
A.nota1 = atoi(token);
alumno1.nota1(A.nota1);
token = strtok(NULL, ";");
A.nota2 = atoi(token);
alumno1.nota2(A.nota2);
token = strtok(NULL, ";");
A.nota3 = atoi(token);
alumno1.nota3(A.nota3);

cout << "Legajo : " << alumno1.verLegajo() << endl;
cout << "Apellido : " << alumno1.verApellido() << endl;
cout << "Nombre : " << alumno1.verNombre() << endl;
cout << "Primera nota : " << alumno1.verNota1() << endl;
cout << "Segunda nota : " << alumno1.verNota2() << endl;
cout << "Tercera nota : " << alumno1.verNota3() << endl;

entrada.close();

promedio = CalcularPromedio(A.nota1, A.nota2, A.nota3);

cout << "Promedio : " << promedio << endl;
cin.get();
}


Saludos a todos
 
hola me pueden manda la sintaxis o otros programas de archivos porfavor, voy es segundo semestre de ing. en sistemas comp. y tengo que entregar unos programas para el lunes. me acabo de inscribir aqui y me gustaria que me ayudaran

gracias
 
Como lo mostró Josi, la mejor forma es usar la libreria "fstream" o sus o los derivados de estas "ifstream", "ofstream".