Как добавить данные в формат std::string в шестнадцатеричном формате?

У меня есть существующий std::string и int. Я хотел бы добавить int в строку, но в человекообразной форме (шестнадцатеричная нотация), а не в двоичной тарабарщине.

Обычно я просто использую printf, но я не могу сделать это с помощью std:: string (может ли я?)

Любые предложения относительно того, как это сделать?

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

Ответы

Ответ 1

Используйте строковый поток. Вы можете использовать его как любой другой выходной поток, поэтому вы можете вставить в него std::hex. Затем извлеките функцию stringstream::str().

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

Ответ 2

Основываясь на ответе xtofl, заголовок, который вы ищете, <iomanip>. Здесь std::hex, std::dec и std::oct живут, все из которых могут быть направлены в потоки, так что все, что отправляется в поток после них, преобразуется в эту базу.

Ответ 3

Я считаю, что строка "только" объявляет std:: stringstream. Поэтому вам также необходимо включить:

#include <sstream>