Para escribir un número en un stream sólo tienes que hacer:fo << num;Y para leerlo:fi >> num;
CitarNo estariamos metiendolo en un archivo de texto?? es decir yo quiero que lo meta en un archivo binario y pasar los datos a binario, si se hace asi se pasa como texto (creo). El problema es que , dices que esta mal, yo le envie el codigo al profesor y me dijo que no sabia donde estaba el problema , que lo veia todo bien...Perdona, tienes razón, me he colado... No uso mucho las funciones read y write. El reinterpret_cast de int* a char* es correcto en este caso. Lo que no haces bien es escribir las cadenas.Un objeto de string puede tener muchos datos internos, entre ellas un puntero a la cadena de caracteres, el tamaño que ocupa, el tamaño de memoria reservada, el tamaño máximo que puede alcanzar...Lo que estás haciendo es imprimir esos datos, porque le pasas un puntero al propio objeto string.Lo que tendrías que hacer es:fo.write(ape1.c_str(), ape1.size() + 1);El problema es que la función c_str() devuelve un array constante, que no se puede modificar, y no es compatible con la llamada a write (no porque lo modifique, sino porque acepta un char*, no un const char*), así que hay que hacer:fo.write(reinterpret_cast<char*>(ape1.c_str()), ape1.size() + 1);El +1 es para que escriba el NULL final. Otra forma, quizá mejor, es escribir primero el tamaño de la cadena y después la propia cadena, sin el NULL final, porque de lo contrario no sabes cuánto ocupa.Leer es más complicado. No puedes leer directamente en un string, tienes que crear un array de char (por eso necesitas saber cuánto ocupa), leer ahí la cadena, y luego asignarla al string.CitarLo de reinterpret_cast igual.. el profesor , cuando trabajabamos con archivos binarios nos recomendo usar eso para transformar unos datos a otros... pero ... uuufffEl problema es que reinterpret_cast no transforma nada. Simplemente reinterpreta la memoria.Si no te fias de mi opinión, cosa que puedo entender si un profesor te ha dicho que lo uses, a lo mejor te fias de los 719 que han votado esta pregunta en stack overflow: http://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-and-reinterpret-cast-be-usedAhí además te explican cuándo usar cada uno. La verdad es que yo uso el cast de C, aunque es mala práctica. De todos modos, insisto, en este caso son correctos los cast. Aún así, según vayas progresando, te recomiendo que profundices en su funcionamiento, y que si ves un código repleto de ellos, lo mires con lupa.
No estariamos metiendolo en un archivo de texto?? es decir yo quiero que lo meta en un archivo binario y pasar los datos a binario, si se hace asi se pasa como texto (creo). El problema es que , dices que esta mal, yo le envie el codigo al profesor y me dijo que no sabia donde estaba el problema , que lo veia todo bien...
Lo de reinterpret_cast igual.. el profesor , cuando trabajabamos con archivos binarios nos recomendo usar eso para transformar unos datos a otros... pero ... uuufff