En realidad solo necesito guardar los atributos "referido" y "clicks" que se ira acumulando con nuevos datos cada dia. El resto de los datos los puedo obtener del .txt. Entonces guardaria el atributo en otro.txt (aun estoy aprendiendo c++ y no termino de entender los archivos binarios) pero luego para recuperarlo tendria que reprocesarlo y convertirlo en un array o vector. No estoy seguro de que esta sea la opcion mas eficiente y por ello les solicito ayuda para guardar el objeto entero en un binario (de paso consigo practica con los binarios )
Desde ya muchas gracias por su ayuda
Código:
#include <iostream> #include <fstream> #include <string> #include <stdlib.h> //para usar atoi que pasa de string a int // atof pasa de string a float #include <sstream> // para usar ostringsteam que pasa de int a string class referidosRegistro { public: int numero; string bandera; string referido; string referidoDesde; string fechaExpiracion; string ultimoClick; int clicks; float media; int fechaExpiracionDias; //calculado //funcion que toma un getline declarado en creaClaseReferidoRegistro y lo transforma en un array. Tambien llama a la funcion declarador void stringToArray(string lineaReferido); //funcion que toma el array de la funcion anterior, convierte los tipos necesarios y los asigna como datos de la clase void declarador (string _numero, string _bandera, string _referido, string _referidoDesde, string _fechaExpiracion, string _ultimoClick, string _clicks, string _media); }; //funcion que inicia la creacion de la clase void creaClaseReferidoRegistro () { ifstream listaReferidos; listaReferidos.open("referidos.txt",ios::in); referidosRegistro referido[100]; for (int i=0; i <=99; i++) { string lineaReferido; getline(listaReferidos, lineaReferido); referido[i].stringToArray(lineaReferido); }; }; //funcion que toma un getline de creaClaseReferidoRegistro y lo transforma en un array. Tambien llama a la funcion declarador void referidosRegistro:: stringToArray(string lineaReferido) { string _lineaReferido = lineaReferido; int lastPosicion = 0; int posicion = 0; string referidoArray[8]; int i = 0; while (posicion != -1) { posicion = _lineaReferido.find(";",lastPosicion+1); if (i==0) { referidoArray[i] = _lineaReferido.substr(lastPosicion, posicion - lastPosicion); } else { referidoArray[i] = _lineaReferido.substr(lastPosicion+1, posicion - lastPosicion -1); } i++; lastPosicion = posicion; }; declarador(referidoArray[0], referidoArray[1], referidoArray[2], referidoArray[3], referidoArray[4], referidoArray[5], referidoArray[6], referidoArray[7]); }; //funcion que toma el array de la funcion anterior, convierte los tipos necesarios y los asigna como datos de la clase void referidosRegistro:: declarador (string _numero, string _bandera, string _referido, string _referidoDesde, string _fechaExpiracion, string _ultimoClick, string _clicks, string _media) { numero = atoi(_numero.c_str()); bandera = _bandera; referido = _referido; referidoDesde = _referidoDesde; fechaExpiracion = _fechaExpiracion; ultimoClick = _ultimoClick; clicks = atoi(_clicks.c_str()); media = atof(_media.c_str()); fechaExpiracionDias = fechaADias(fechaExpiracion); }; int main() { creaClaseReferidoRegistro(); };