我有一个std::array
,我希望通过将每个字节转换为相等的HEX值来创建一个字符串,如下所示:
string getString(array<unsigned char, 10> data)
{
// what is the faster way to do this?
}
main()
{
array<unsigned char, 10> data={0,1,2,3,4,5,6,7,8,9};
string result=getString(data);
out<<result<<endl;
}
它应该打印如下内容:
0x00 0x01 0x02 0x03
甚至
00010203040506070809
任何更快的方式。
我知道我可以使用for循环来完成这项工作,但是如果有更简洁的方法可以做到这一点?
答案 0 :(得分:1)
你可以做类似下面的事情
string getString(array<unsigned char, 10> data)
{
std::stringstream ss;
ss << std::hex << std::setfill('0');
for(int i=0; i<data.size(); ++i)
ss << std::setw(2) << (int)data[i];
return ss.str();
}
答案 1 :(得分:1)
如果您想获得一些乐趣,可以使用std::ostream_iterator
:
template<class Container>
std::string hex(Container const& c)
{
std::stringstream out;
std::copy(begin(c), end(c), std::ostream_iterator<unsigned int>(out << std::hex, " "));
return out.str();
}
std::cout << hex(array) << "\n";