4

我需要将 的输出printf("%02X", buffer[0])放入字符串中。

理论上它会是这样的:

string str = printf("%02X", buffer[0]) +printf("%02X", buffer[1]) +printf("%02X", buffer[2]) +printf("%02X", buffer[3]);

但是,这不起作用,我不知道该怎么做。

任何帮助表示赞赏,谢谢。

4

3 回答 3

14

的返回值printf是写入的字符数,使用snprintf

char s[BIG_ENOUGH];

snprintf(s, BIG_ENOUGH, "%02X %02X %02X %02X ", buffer[0],
                                                buffer[1],
                                                buffer[2],
                                                buffer[3]);

std::string str(s);

此外,您可以忘记 xprintf 方式并使用 C++ 流:

std::ostringstream s;

s << std::hex;

for (int i=0; i<4; i++)
    s << std::setfill('0') << std::setw(2) << buffer[i] << ' ';

std::string str(s.str());
于 2013-10-15T13:15:09.893 回答
2

正如 M M. 所写, sprintf 是您正在寻找的。或者更好的是,snprintf用于增加针对缓冲区溢出的安全性:

char s[SIZE];
snprintf(s, SIZE, "%02X", buffer[0]);
string str(s);

snprintf 永远不会向 s 写入超过 SIZE 个字节。

于 2013-10-15T13:23:02.400 回答
0

我发现 boost::format() 是在输出到流时保留 printf() 类型格式的好方法。使用流后,您可以使用 std::ostringstream 或类似于内存中的格式的东西。

于 2013-10-15T14:56:37.283 回答