Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2013
Isajar Isajar is offline
Registrado
NULL
 
Registrado: mar 2012
Posts: 8
Poder: 0
Isajar Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 13-02-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Isajar Ver Mensaje
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Leer archivos binarios MasLoveAvge Varios 7 02-01-2016 11:29:40
Duda sobre Archivos enviados por medio de firebird sin guardarlo en la BD RONPABLO Firebird e Interbase 6 13-10-2006 23:49:44
archivos binarios kazcote Varios 5 05-12-2005 04:02:35
duda sobre archivos de texto eduarcol Varios 4 05-02-2004 15:06:31
archivos exe y/o binarios fcran Varios 2 26-06-2003 14:34:21


La franja horaria es GMT +2. Ahora son las 19:59:58.


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
Copyright 1996-2007 Club Delphi