Как я могу добавить данные в std :: string в шестнадцатеричном формате? - PullRequest
18 голосов
/ 10 августа 2009

У меня есть std::string и int. Я хотел бы объединить ASCII (строковый литерал) шестнадцатеричное представление целого числа в std::string.

Например :

 std::string msg = "Your Id Number is: ";
 unsigned int num = 0xdeadc0de; //3735929054

Желаемая строка :

std::string output = "Your Id Number is: 0xdeadc0de";

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

Есть предложения, как это сделать?

Ответы [ 3 ]

34 голосов
/ 10 августа 2009

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

std::stringstream ss;
ss << "your id is " << std::hex << 0x0daffa0;
const std::string s = ss.str();
5 голосов
/ 10 августа 2009

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

0 голосов
/ 27 апреля 2013

Я полагаю, что 'string' только вперед объявляет std :: stringstream. Таким образом, вы также должны включить:

#include <sstream>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...