Как добавить данные в формат 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>