Edw*_*d83 2 c++ string format stringstream
我找到了代码:
static void PrintMACaddress(unsigned char MACData[])
{
printf("MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n",
MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]);
}
Run Code Online (Sandbox Code Playgroud)
此功能打印MAC地址 00-53-45-00-00-00
我的问题:
打印时如何制作这种格式std::stringstream?
更新:
谢谢大家的意见!
我不知道为什么,但有些解决方案没有static_cast<unsigned int>给我奇怪的字符,?-0?-0M-0?-0m-0?所以我选择了icecrime的boost版本:
void PrintMACaddressWithBoostFormat(unsigned char MACData[])
{
boost::format fmt("%02X-%02X-%02X-%02X-%02X-%02X");
for (int i = 0; i != 6; ++i)
{
fmt % static_cast<unsigned int>(MACData[i]);
}
std::stringstream valStream(fmt.str().c_str());
//testing
std::cout << "Boost version: " << valStream.str().c_str() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
Palmik的解决方案也很棒;)
谢谢!
也许有点偏离主题,但我个人会使用Boost.Format:
boost::format fmt("%02X-%02X-%02X-%02X-%02X-%02X");
for (int i = 0; i != 6; ++i)
fmt % static_cast<unsigned int>(MACData[i]);
std::cout << fmt << std::endl;
Run Code Online (Sandbox Code Playgroud)