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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda pasar de vector<BYTE> a string en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda pasar de vector<BYTE> a string en C++  (Leído 3,052 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Duda pasar de vector<BYTE> a string en C++
« en: 11 Junio 2016, 22:06 pm »

Código
  1. std::string ArrayToString(std::vector<BYTE> data)
  2. {
  3. std::string ret;
  4.  
  5. for (BYTE b : data)
  6. {
  7. ret += (CHAR)b;
  8. }
  9.  
  10. return ret;
  11. }
  12.  

También he probado:

Código
  1. ret = std::string(reinterpret_cast<CHAR*>(data.data()), data.size());
  2.  

Estoy lanzando una petición a una página con curl, y la parte del body con la respuesta (la obtengo en string con curl), pero luego la paso a vector<BYTE>, para hacer Inflate si está comprimido etc, y si no tiene ninguna compresión ni es imagen, entonces lo pasa a cadena y trabaja con ella.

El caso que para convertir el vector a cadena falla, pero solo con páginas que son UTF-8 (unicode) y contienen caracteres especiales, sin embargo CURL parece que si que es capaz de recibir la respuesta en UTF-8 y cargarla en una string.

¿Debería de usar wstring o caracteres unicode? ¿o me estoy haciendo un lío? XD

Saludos.

Edito: El tema esta solucionado fuera una ida de olla mía, porque no entiendo porque al devolver la string me sale nula aun pasandola como referencia..wat


« Última modificación: 12 Junio 2016, 00:00 am por Kaxperday » 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.
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Duda pasar de vector<BYTE> a string en C++
« Respuesta #1 en: 11 Junio 2016, 23:57 pm »

Hola respecto a tu pregunta no se si te estes haciendo un lio o no.

Encontre este codigo:

Código
  1. stringstream ss;
  2.  
  3. for (unsigned int i=0; i < data.size(); i++
  4. {
  5.    ss << data[i];
  6. }
  7.  
  8. string s_data = ss.str();

Espero y te funcione.

Solo hay algo qur me causa ruido.


Estoy lanzando una petición a una página con curl, y la parte del body con la respuesta (la obtengo en string con curl), pero luego la paso a vector<BYTE>, para hacer Inflate si está comprimido etc, y si no tiene ninguna compresión ni es imagen, entonces lo pasa a cadena y trabaja con ella.


Si en un principio ya era string y despues lo pasas a byte por que no usas el primer string que ya tenias.

Saludos


En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Duda pasar de vector<BYTE> a string en C++
« Respuesta #2 en: 12 Junio 2016, 00:07 am »

Hola alberto gracias por la respuesta,

Es que estoy editando el tema mientras y bueno lo que hacía es pasar de string a vector<BYTE> y luego a string en este caso, el caso es que se pueden añadir a la string simplemente sin conversion como esta aunque con conversiones de más bytes también funcionarían, algo que se supone que ya sabía pero al pasarme el siguiente error pues busque fallos donde no tenía.

Lo que no entiendo porque la string me la devuelve nula:

Código
  1. std::string ArrayToString(std::vector<BYTE> data)
  2. {
  3. std::string ret;
  4. std::cout << "Comienza la cadena:";
  5. for (BYTE b : data)
  6. {
  7. ret += b;
  8. }
  9. std::cout << ret; system("pause");
  10. return ret;
  11. }
  12.  

Código
  1. std::string fullMessage;
  2. fullMessage = ArrayToString(data);
  3. cout << fullMessage; system("pause");
  4.  

:"DDD

Wow vuelve la magia, a veces funciona a veces no, a veces devuelve algo otras no¿? me parto XD.

Flipáis es por el system("pause") no me digáis como cohones influye en algo pero lo hace jajaja

Os lo prometo, pongo mostrar string + pause en la funcion y no devuelve nada, la muestro en la funcion (ponga o no pause) y la devuelve bien, jaja la magia. XD quizás sea por estar haciendo pruebas del servidor con el navegador, quizás en el tiempo que muestra la string en la funcion recibe nueva peticion y de alguna manera sobreescriba la anterior o algo así.

Bueno tema supongo :) , supongo que tendré que meditar más antes de postear porque ultimamente.. jajaja.
« Última modificación: 12 Junio 2016, 00:36 am por Kaxperday » 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.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Duda pasar de vector<BYTE> a string en C++
« Respuesta #3 en: 12 Junio 2016, 02:07 am »

No estoy muy seguro, pero ¿y si haces flush?

Código
  1. std::string fullMessage;
  2. fullMessage = ArrayToString(data);
  3. cout << fullMessage;
  4. cout.flush();
  5. system("pause");

Ya digo que no sé si estoy diciendo alguna tontería
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Duda pasar de vector<BYTE> a string en C++
« Respuesta #4 en: 12 Junio 2016, 10:16 am »

No estoy muy seguro, pero ¿y si haces flush?

Pues no iba tampoco, pero no importa ya que no me interesa mostrar la cadena.

Saludos y gracias a todos.
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] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar BYTE (db) a FLOAT (DQ)
Ingeniería Inversa
joseyana2007 2 3,552 Último mensaje 12 Noviembre 2008, 02:46 am
por joseyana2007
STL: Combinando uso de map, string y vector
Programación C/C++
david_BS 0 1,712 Último mensaje 8 Mayo 2012, 02:26 am
por david_BS
DLL con STL (vector,string,stringstream) exportar
Programación C/C++
patilanz 3 2,288 Último mensaje 22 Agosto 2015, 22:26 pm
por BlackZeroX
Suma byte a byte con acarreo en variable de 2 bytes
Programación C/C++
AlbertoBSD 2 4,003 Último mensaje 18 Mayo 2016, 18:21 pm
por AlbertoBSD
Encontrar un String en un Vector de String [JAVA]
Java
Tonyskater 5 2,423 Último mensaje 3 Mayo 2017, 12:52 pm
por 3n31ch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines