elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Base de datos c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Base de datos c++  (Leído 3,122 veces)
ianmorar03

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Base de datos c++
« en: 17 Abril 2016, 10:17 am »

Como puedo hacer una base de datos? con la funcion "struct", sin hacer uso de las librerias para c (stdio.h y conio.h) tengo las bases de datos pero ocupo que me imprima todo en un archivo de texto.
Código:
#include <iostream>

int main(){

struct datos{
int numero;
string nombre;
};

int cuantos;
cout<<"Cuantas personas quiere?";
cin>>cuantos;

datos *data=new datos[cuantos];

for(int i;i<cuantos;i++){
cout<<"Digite su numero de cedula:"<<i;
cin>>data[i].numero;
cout<<"Digite su nombre:"<<i;
cin>>data[i].nombre;
}
for(int i=0 ; i<cuantos; i++){
cout<<"----------------------------------------------------------------------"<<endl;
cout<<"Nombre: "<<data[i].nombre;
cout<<"Cedula: "<<data[i].numero;
}
}


Si digito 2o mas en la cantidad de cuantas personas, quiero que me imprima en un archivo de texto todas las personas que digite, no se como hacerlo, si me pudieran ayudar seria genial.


« Última modificación: 17 Abril 2016, 10:19 am por ianmorar03 » En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Base de datos c++
« Respuesta #1 en: 17 Abril 2016, 11:08 am »

Puedes hacer uso de la librería http://en.cppreference.com/w/cpp/io/basic_fstream
Ejemplo:
Código
  1. fstream file("mi_fichero.txt");
  2. file << data[i].nombre << endl;
  3. file.close();


En línea

ianmorar03

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: Base de datos c++
« Respuesta #2 en: 17 Abril 2016, 11:25 am »

Puedes hacer uso de la librería http://en.cppreference.com/w/cpp/io/basic_fstream
Ejemplo:
Código
  1. fstream file("mi_fichero.txt");
  2. file << data[i].nombre << endl;
  3. file.close();

Sigue sin funcionarme, solo me imprime el ultimo nombre y cedula guardada...
En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Base de datos c++
« Respuesta #3 en: 17 Abril 2016, 13:32 pm »

pon el nuevo código.
En línea

ianmorar03

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: Base de datos c++
« Respuesta #4 en: 17 Abril 2016, 20:35 pm »

pon el nuevo código.
Código:
struct datos{
int numero;
string nombre;
};

int cuantos;
cout<<"Cuantas personas quiere?";
cin>>cuantos;

datos *data=new datos[cuantos];

for(int i=0 ; i<cuantos ; i++){
cout<<"Digite su numero de cedula:"<<i;
cin>>data[i].numero;
cout<<"Digite su nombre:"<<i;
cin>>data[i].nombre;
}
for(int i=0 ; i<cuantos; i++){
fstream file("datos.txt");
file <<"nombre: ";
file <<data[i].nombre<<endl;
file<<"cedula: ";
file <<data[i].numero<<endl;
file.close();
}
}
En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
Gunhack

Desconectado Desconectado

Mensajes: 42



Ver Perfil
Re: Base de datos c++
« Respuesta #5 en: 17 Abril 2016, 21:19 pm »

El ciclo donde guardas los archivos está mal...
Código
  1. for(int i=0 ; i<cuantos; i++){
  2. fstream file("datos.txt");
  3. file <<"nombre: ";
  4. file <<data[i].nombre<<endl;
  5. file<<"cedula: ";
  6. file <<data[i].numero<<endl;
  7. file.close();
  8. }

Debe de ser así...
a) Primero se declara el fstream fuera del ciclo, si lo pones dentro es como si la inicializaras la variable en cada iteración.

b)Después, si solo quieres guardar los datos para volver a cargarlos luego, solamente debes de guardar el dato en sí, sin ninguna etiqueta antes ("nombre: " y cosas así...), si lo que quieres es crear una salida formateada si debe llevar las etiquetas.

c) Cuando pones "file.close();" estás cerando el buffer de salida, osea cierras el archivo, y si lo haces en cada iteración... pues bueno, como lo volvias a crear, solamente estabas abriendo y cerrando el mismo archivo para guardar un dato por iteración, al final solo se mostraría el ultimo dato ingresado.

Código
  1. fstream file("datos.txt"); //a)
  2. for(int i=0 ; i<cuantos; i++){ //b)
  3. file <<data[i].nombre<<endl;
  4. file <<data[i].numero<<endl;
  5. }
  6. file.close();//c)
En línea

ianmorar03

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: Base de datos c++
« Respuesta #6 en: 17 Abril 2016, 22:55 pm »

El ciclo donde guardas los archivos está mal...
Código
  1. for(int i=0 ; i<cuantos; i++){
  2. fstream file("datos.txt");
  3. file <<"nombre: ";
  4. file <<data[i].nombre<<endl;
  5. file<<"cedula: ";
  6. file <<data[i].numero<<endl;
  7. file.close();
  8. }

Debe de ser así...
a) Primero se declara el fstream fuera del ciclo, si lo pones dentro es como si la inicializaras la variable en cada iteración.

b)Después, si solo quieres guardar los datos para volver a cargarlos luego, solamente debes de guardar el dato en sí, sin ninguna etiqueta antes ("nombre: " y cosas así...), si lo que quieres es crear una salida formateada si debe llevar las etiquetas.

c) Cuando pones "file.close();" estás cerando el buffer de salida, osea cierras el archivo, y si lo haces en cada iteración... pues bueno, como lo volvias a crear, solamente estabas abriendo y cerrando el mismo archivo para guardar un dato por iteración, al final solo se mostraría el ultimo dato ingresado.

Código
  1. fstream file("datos.txt"); //a)
  2. for(int i=0 ; i<cuantos; i++){ //b)
  3. file <<data[i].nombre<<endl;
  4. file <<data[i].numero<<endl;
  5. }
  6. file.close();//c)


@gunhack gracias por el codigo, ahora ya se como hacerlo PURA VIDA!
En línea

Aquellos que estan locos como para pensar que pueden cambiar el mundo , son los que lo hacen.
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Base de datos c++
« Respuesta #7 en: 17 Abril 2016, 23:58 pm »

.
« Última modificación: 20 Abril 2016, 18:16 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Base de datos c++
« Respuesta #8 en: 18 Abril 2016, 13:26 pm »

Si piensas hacer una base de datos en C++, sería interesante que mirases las bibliotecas de la STD, donde hay contenedores que te facilitarían buena parte del trabajo.

Por ejemplo la clase VECTOR, LIST y MAP.

Sobre todo este último, ya que tienes "hecho" el indexar a mucha velocidad, el acceder a elementos, borrarlos, insertar, etc.

Vamos, que para que "reinventar la rueda" si eso ya está hecho
En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines