
como llamar a una funcion que hace conexion por fstream a un archivo desde otrafuncion
Publicado por Greivin (2 intervenciones) el 04/12/2016 19:15:50
Debo crear un programa que llame a una función "X" que contenga la conexion a un archivo binario por fstream desde otra función, no quiero inserta directamente código de conexión en la función, ya que este conexión se usara en varias funciones mas de manejo de datos y la cual debo usar para abrir vario archivos binarios diferentes, pienso cambiar el nombre el archivo binario por medio de una variable dependiendo del archivo que se deba manejar
Tengo unos archivos binarios:
Cliente.dat
Fiador.dat
Prestamo.dat
Pagos.dat
quiero utilizar la misma funcion "X" para abrir todos esos archivos individualmente.
funsion que hace la llamada:
donde cliente.dat, la voy a sustituir por una variable
El problema es que no se como llamar a una funcion dentro de otra funcion y que esta conexion pueda ulitizarla con "seekg" para buscar el ID de un cliente y verfificar si existe o no para insertar los datos.
Quisiera si alguien me puede ayudar con esto. se ñp agradeceria mucho
NOTA: "datosClientes" es una clase
Tengo unos archivos binarios:
Cliente.dat
Fiador.dat
Prestamo.dat
Pagos.dat
quiero utilizar la misma funcion "X" para abrir todos esos archivos individualmente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void crearConexion(fstream&conectar)
{
ofstream aperturaArchivo("cliente.dat",ios::binary);
if(!aperturaArchivo)
{
fstream aperturaArchivo("cliente.dat", ios::in|ios::out |ios::binary);
if(!aperturaArchivo)
{
cerr<<"No se pudo crear el archivo."<<endl;
exit(1);
}
}
}
funsion que hace la llamada:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void registrarNuevoCliente()
{
crearConexion(fstream &insertarEnArchivo);// no me funciona actualmente la llamada.
cout<<"Ingrese el numero de cedula (Digite '0' en vez de guiones)\n";
int numeroID;
cin>>numeroID;
insertarEnArchivo.seekg((numeroID-1) * sizeof(datosCliente));
datosCliente cliente;
insertarEnArchivo.read(reinterpret_cast< char *>(&cliente),sizeof(datosCliente));
if(cliente.obtenerNumeroID()==0)
{
char apellido[15];
char primerNombre[10];
int estado;
cout<<"digite el primer nombre, apellido y estado\n ";
cin>>setw(10)>>primerNombre;
cin>>setw(15)>>apellido;
cin>>estado;
cliente.establecerNumeroID(numeroID);
cliente.establecerApellido(apellido);
cliente.establecerNombre(primerNombre);
cliente.establecerEstado(estado);
insertarEnArchivo.seekp((numeroID-1) * sizeof(datosCliente));
insertarEnArchivo.write(reinterpret_cast< const char *>(&cliente),sizeof(datosCliente));
}
else
{
cerr<<"Ya existe un cliente con la cedula "<<numeroID<<endl;
}
}
donde cliente.dat, la voy a sustituir por una variable
El problema es que no se como llamar a una funcion dentro de otra funcion y que esta conexion pueda ulitizarla con "seekg" para buscar el ID de un cliente y verfificar si existe o no para insertar los datos.
Quisiera si alguien me puede ayudar con esto. se ñp agradeceria mucho
NOTA: "datosClientes" es una clase
Valora esta pregunta


0