我需要將輸出printf("%02X", buffer[0])
放入一個字符串中。這是一種將printf的輸出設置爲字符串的方法嗎?
理論上它會是這樣的:
string str = printf("%02X", buffer[0]) +printf("%02X", buffer[1]) +printf("%02X", buffer[2]) +printf("%02X", buffer[3]);
然而,這不工作,我無法弄清楚如何做到這一點。
任何幫助表示讚賞,謝謝。
我需要將輸出printf("%02X", buffer[0])
放入一個字符串中。這是一種將printf的輸出設置爲字符串的方法嗎?
理論上它會是這樣的:
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永遠不會寫超過SIZE字節爲s以上。
我發現boost :: format()是在輸出到流時保留printf()類型格式的好方法。一旦你使用了一個流,你可以使用std :: ostringstream或者類似於內存中的格式。
'printf'是一個C函數,它解釋了爲什麼它與C++字符串混合得很差。 – MSalters