2009-08-10 12 views
14

Mam istniejące std :: string i int. Chciałbym dodać int do łańcucha, ale w formie czytelnej dla człowieka (notacja szesnastkowa), a nie w binarnym bełkocie.Jak mogę dołączyć dane do std :: string w formacie szesnastkowym?

Normalnie, to bym po prostu użyć printf, ale nie mogę tego zrobić z std :: string (mogę?)

Wszelkie sugestie, w jaki sposób to zrobić?

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

Odpowiedz

30

Użyj struny. Można go używać jako dowolnego innego strumienia wyjściowego, więc można również wstawić do niego std::hex. Następnie wyodrębnij funkcję stringstream::str().

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

std :: showbase powinien być użyty oprócz std :: hex dokładnie odpowiadający wymaganiom OP przedrostka reprezentacji int przez "0x" –

5

Opierając się na odpowiedź xtofl za nagłówek szukasz jest <iomanip>. To jest miejsce, w którym żyją: std::hex, std::dec i std::oct, z których wszystkie mogą być kierowane na strumienie tak, że wszystko, co zostanie wysłane do strumienia po nich, zostanie przekonwertowane na tę bazę.

0

Wierzę, że "ciąg" tylko do przodu deklaruje std :: stringstream. Musisz więc dodać:

#include <sstream> 
Powiązane problemy