这些是将 printf 的输出设置为字符串的一种方法吗?

Is these a way to set the output of printf to a string?

本文关键字:一种 方法 printf 输出 设置 字符串      更新时间:2023-10-16

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

理论上,它会是这样的:

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

但是,这行不通,我不知道该怎么做。

任何帮助不胜感激,谢谢。

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());
正如M

M.所写,sprintf就是你要找的。或者更好的是,使用 snprintf 来增加缓冲区溢出的安全性:

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

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

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

相关文章: