mac地址的输出格式(C++,stringstream)

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解决方案也很棒;)

谢谢!

ice*_*ime 5

也许有点偏离主题,但我个人会使用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)