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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Guardar un array en un archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Guardar un array en un archivo  (Leído 1,779 veces)
cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Guardar un array en un archivo
« en: 26 Diciembre 2017, 13:52 pm »

Tengo un problema al tratar de guardar un array en un archivo con la biblioteca fstream, y es que tengo una estructura dinámica que almacena una serie de números y me interesa guardarla de alguna forma, por lo que he decidido meter todos los valores en una estructura con un array (el cual es de tamaño variable, puesto que la cantidad de números que tiene que almacenar varía) y almacenar esta estructura en el fichero.
La estructura es la siguiente:
Código
  1. long int cantidadAlmacenar = 0;
  2. struct guardarArchivo{
  3.    long int cantidad = cantidadAlmacenar;
  4.    long int numero [cantidad] = {0};
  5. };

Y la funcion que transforma la estructura dinámica en el array (en verdad es un método de una clase)es la siguiente:
Código
  1. void CCifras::guardarArchivo(void)
  2. {
  3.    struct guardarArchivo guardar;
  4.    struct nodo* guia = comienzo;
  5.    for(int i = 0; i < cantidad; i++)
  6.    {
  7.        guardar.numero[i] = guia.numero;
  8.        guia = guia.siguiente;
  9.    }
  10.    ofstream ficheroEscribir; ficheroEscribir.open ("BaseDatos.dat", ios::out | ios::binary);
  11.    ficheroEscribir.write((char *) &guardar, sizeof(guardar));
  12.    ficheroEscribir.close();
  13. }
Pero esta técnica hace aguas por todas partes (ya la he utilizado y funciona cuando la cantidad de valores a almacenar es fija, pero este no es el caso) y el compilador me da el error: "invalid use of non-static data member" en la linea donde pone
Código
  1. long int numero [cantidad] = {0};
.
El caso, si alguien puede decirme cual es el fallo en mi forma de hacerlo o directamente la forma correcta de hacer lo que quiero se lo agradecería XD


En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Guardar un array en un archivo
« Respuesta #1 en: 26 Diciembre 2017, 13:56 pm »

Te diría que antes de todo eso, empieces a utilizar la clase vector, de la librería estándar (<vector>).
Es un array de tamaño dinámico. http://www.cplusplus.com/reference/vector/vector/
Un vector almacena cualquier cantidad de elementos, y se pueden eliminar, agregar, y ver cuantos hay.


En línea

cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Guardar un array en un archivo
« Respuesta #2 en: 26 Diciembre 2017, 14:22 pm »

Creo que puede servir para mi programa, pero tengo un par de dudas al respecto:

1)La lista de números que voy a utilizar podría llegar a contener varios miles de valores, consumiría esto muchos recursos del ordenador o produciría un tiempo de ejecución muy largo?

2)Si creo un objeto vector y lo guardo sin más en un fichero, se guardan también sus valores? (lo pregunto por si la clase funciona con algo parecido a estructuras dinámicas y al guardar el objeto tal cual solo se guarda un puntero a donde están almacenados los valores o algo por el estilo, no se si me explico)
En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Guardar un array en un archivo
« Respuesta #3 en: 26 Diciembre 2017, 14:39 pm »

Un objeto vector tendrás que guardarlo manualmente 8como si fuera el array)

Un vector guarda cualquier tipo. Si guardas el tipo int (4 bytes generalmente), y almacenas 1 millon, pues seran 4.000.000 bytes, 4 MB.
Y en cuanto al tiempo de ejecución, es inevitable. Pero por 1 millón de elementos no tendrás problema.

En fin, pruébalo. Haz pruebas con vector antes de ponerte con los archivos, para ver sus posibilidades y cómo funciona.
En línea

cNoob

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Guardar un array en un archivo
« Respuesta #4 en: 26 Diciembre 2017, 16:41 pm »

Lo haré, muchas gracias por la ayuda :D
En línea

Wannabe programador autodidacta de c++
"Usain Bolt comenzó gateando."
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Guardar numero en array
Programación C/C++
lol_fallen 6 18,284 Último mensaje 1 Marzo 2012, 12:05 pm
por satu
Variables de formulario y guardar en un array de sesion
PHP
MarMIX 1 9,789 Último mensaje 7 Marzo 2012, 01:47 am
por s00rk
Array no me encuenta el archivo
PHP
itzg3 1 700 Último mensaje 11 Mayo 2014, 12:35 pm
por Jenny T-Type
Guardar Consulta MYSQL en arreglo/array PHP
Desarrollo Web
blaknez 1 7,358 Último mensaje 11 Agosto 2014, 19:14 pm
por fdap91
[SOLUCIONADO] Java - Guardar String en un array de URL[]
Java
Paniic 4 2,058 Último mensaje 12 Abril 2015, 16:53 pm
por Paniic
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines