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

时间:2009-08-10 14:52:45

标签: c++ string

我有一个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 个答案:

答案 0 :(得分:34)

使用字符串流。您可以将其用作任何其他输出流,因此您可以同等地插入std::hex。然后提取它的stringstream::str()函数。

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

答案 1 :(得分:5)

根据xtofl的回答,您正在寻找的标题是<iomanip>。这是std::hexstd::decstd::oct生存的地方,所有这些都可以定向到流中,以便在它们之后发送到流中的任何内容都转换为该基础。

答案 2 :(得分:0)

我相信'string'只向前声明std :: stringstream。所以你还需要包括:

#include <sstream>