我需要将 的输出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 或类似于内存中的格式的东西。