Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   duda sobre archivos binarios (https://www.clubdelphi.com/foros/showthread.php?t=82238)

Isajar 12-02-2013 20:54:57

duda sobre archivos binarios
 
Buenas , quisiera saber si se pueden guardar contenedores de stl en archivos binarios, es decir si se podria hacer algo como:

...
vector<int> a;
...ofstream ar(....ios::binary)

ar.write((char*)& a, sizeof(a))

??

Muchas Gracias

Saludos

ecfisa 13-02-2013 04:26:20

Cita:

Empezado por Isajar (Mensaje 454926)
Buenas , quisiera saber si se pueden guardar contenedores de stl en archivos binarios, es decir si se podria hacer algo como:
...

Hola Isajar.

Si, te hice un ejemplo simple para que revises:
Código:

#include <iostream>
#include <vector>
#include <fstream>
#include <cstdlib>
#include <ctime>

#define MAX 100

using namespace std;

int main()
{
  // cargar MAX números aleatorios en v1
  vector <int> v1;
  srand((unsigned)time(NULL));
  v1.clear();
  v1.resize(MAX);
  for(int i=0;i<MAX;i++)  v1[i] = rand()%100;

  // guardar v1 en archivo
  ofstream wfile("prueba.dat", ios::out | ios::binary | ios::trunc);
  wfile.write(reinterpret_cast<char*>(&v1[0]), MAX * sizeof(int));
  wfile.close();

  // leer MAX números en v2
  vector <int> v2;
  ifstream rfile("prueba.dat", ios::in | ios::binary);

  // obtener cantidad de int del archivo  [*]
  rfile.seekg(0, ios::end);
  int sz = rfile.tellg() / sizeof(int);
  rfile.seekg(0, ios::beg);

  v2.resize(sz * sizeof(int));
  rfile.read(reinterpret_cast<char*>(&v2[0]), v2.size());
  rfile.close();

  // mostrar contenido obtenido en v2
  for (int i=0;i < MAX; i++) cout << v2[i] << " ";
  cin.get();
  return EXIT_SUCCESS;
}

[*] En el ejemplo es obvio que la cantidad de enteros guardados en prueba.dat y que serán leídos en v2 es MAX; pero podría suceder que no supieras con antelación cuantos elementos existen.

Saludos.


La franja horaria es GMT +2. Ahora son las 05:13:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi