如何以十六进制格式将数据附加到std :: string?

sam*_*moz 18 c++ string

我有一个std::string和一个int.我想将整数的ASCII(字符串文字)十六进制表示连接到std::string.

例如:

 std::string msg = "Your Id Number is: ";
 unsigned int num = 0xdeadc0de; //3735929054
Run Code Online (Sandbox Code Playgroud)

所需的字符串:

std::string output = "Your Id Number is: 0xdeadc0de";
Run Code Online (Sandbox Code Playgroud)

通常情况下,我只是使用printf,但我不能用std :: string做这个(我可以吗?)

有关如何做到这一点的任何建议?

xto*_*ofl 35

使用字符串流.您可以将它用作任何其他输出流,因此您可以同样插入std::hex其中.然后提取它的stringstream::str()功能.

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

  • 除了std :: hex之外,还应该使用std :: showbase来完全匹配OP对int表示前缀为"0x"的要求 (8认同)

Mer*_*son 5

基于xtofl的答案,您正在寻找的标题是<iomanip>.这就是std::hex,std::decstd::oct所有的活,可直接进入溪流这样,无论被发送到流它们被转换为基地.