2009-08-10 12 views
14

Tengo una std :: string existente y una int. Me gustaría agregar el int a la cadena, pero en forma legible para los humanos (notación hexadecimal), en lugar de en un galimatías binario.¿Cómo puedo agregar datos a std :: string en formato hexadecimal?

Normalmente, yo acababa de usar printf, pero no puede hacer esto con un std :: string (puedo? I)

Cualquier sugerencia en cuanto a cómo hacer esto?

Example: 
Given: 
    std::string - "Your Id Number is: " 
    int - 0xdeadc0de 
Output: 
    std::string - "Your Id Number is: 0xdeadc0de" 

Respuesta

30

Utilice un stringstream. Puede usarlo como cualquier otro flujo de salida, por lo que puede insertar igualmente std::hex en él. Luego extraiga su función stringstream::str().

std::stringstream ss; 
ss << "your id is " << std::hex << 0x0daffa0; 
const std::string s = ss.str(); 
+5

std :: showbase debe usarse además de std :: hex para coincidir exactamente con el requisito del OP de prefijar la representación de int con "0x" –

5

Sobre la base de la respuesta de xtofl, la cabecera que estás buscando es <iomanip>. Aquí es donde viven std::hex, std::dec y std::oct, todos los cuales se pueden dirigir a transmisiones de modo que lo que se envíe a la secuencia después de ellos se convierte a esa base.

0

Creo que 'cadena' solo reenviar declara std :: stringstream. Por lo tanto, también debe incluir:

#include <sstream> 
Cuestiones relacionadas