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

tc9*_*c90 3 c++ printf

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

理论上它将是这样的:

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

然而,这不起作用,我无法弄清楚如何做到这一点.

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

mas*_*oud 12

返回值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);
Run Code Online (Sandbox Code Playgroud)

此外,您可以忘记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());
Run Code Online (Sandbox Code Playgroud)