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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar de char* a string pérdida de datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar de char* a string pérdida de datos  (Leído 4,696 veces)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pasar de char* a string pérdida de datos
« Respuesta #10 en: 8 Noviembre 2015, 13:50 pm »

El write en un archivo binario, escribe todos los bytes que le envíes. Para más información, consulta los métodos en una referencia de C++.


En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Pasar de char* a string pérdida de datos
« Respuesta #11 en: 8 Noviembre 2015, 17:02 pm »

El write en un archivo binario, escribe todos los bytes que le envíes. Para más información, consulta los métodos en una referencia de C++.

Escribe char* es lo que recibe como argumento, y al pasar u_char* a char* se corta en el primer \0, luego escribe hasta el primer \0:

Código
  1. void almacen::escribir(datos _datos)
  2. {
  3. ofstream archivo;
  4. archivo.open(directorio, ofstream::app | ofstream::binary);
  5. _datos = encriptador.encriptar_AES(_datos);
  6. archivo.write(reinterpret_cast<char*>(_datos.contenido), _datos.tamaño);
  7. //archivo.write(string((char*)_datos.contenido, _datos.tamaño).c_str(), _datos.tamaño);
  8. archivo.close();
  9. }

Si hay un byte nulo a la mitad, escribe solo la mitad independientemente de el tamaño que ponga en el segundo argumento, ¿me equivoco?.

Saludos.


En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Pasar de char* a string pérdida de datos
« Respuesta #12 en: 8 Noviembre 2015, 17:35 pm »

ostream::write escribe bytes, cogiendo como fuente el puntero del primer argumento, y escribe tantos bytes como le envías en el segundo argumento.
Olvídate del caracter nulo. El caracter nulo solo sirve para texto. No estás trabajando texto, el caracter nulo no existe ya para ti. No son caracteres lo que escribes, son datos, son bytes, y la forma que tienen los métodos y funciones de saber el tamaño de los bufferes que les pasas, es dándoselo tú.
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Pasar de char* a string pérdida de datos
« Respuesta #13 en: 8 Noviembre 2015, 17:57 pm »

okey ya te comentaré como me va, pero creo que no me escribía lo que le ordenaba, ya probaré de nuevo, gracias.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Char[] != String « 1 2 »
Programación General
Hendrix 19 10,958 Último mensaje 22 Agosto 2011, 03:54 am
por someRandomCode
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
ahaugas 3 5,813 Último mensaje 13 Enero 2013, 14:09 pm
por ahaugas
Pasar tipo const char* a char « 1 2 »
Programación C/C++
jorge_hura 15 11,582 Último mensaje 25 Julio 2013, 09:50 am
por Eternal Idol
Problema con string, char, etc
Programación C/C++
GenR_18 2 2,008 Último mensaje 21 Septiembre 2013, 19:30 pm
por GenR_18
Pasar cadena String a una variable Char en C++
Programación C/C++
RGT 3 2,783 Último mensaje 6 Noviembre 2015, 16:19 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines