alv*_*rez 3 c++ iterator iostream
我们的想法是让一个包含任意二进制数据的向量,并以十六进制表示法将它包含的字节输出到stdout.我使用std :: copy将输入向量中的字节复制到stdout.问题是代码打印出0后跟原始二进制数据.这是代码:
auto vec = std::vector<uint8_t> {'h', 'e', 'l', 'l', 'o'};
std::cout << std::hex << std::setfill('0') << std::setw(2);
std::copy(vec.begin(), vec.end(), std::ostream_iterator<uint8_t>(std::cout));
Run Code Online (Sandbox Code Playgroud)
该应用程序打印出"0hello".我希望它打印出"68656C6C6F".可能是这样的?
小智 9
简单的改变,使用int而不是uint8_t:
std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout));
Run Code Online (Sandbox Code Playgroud)
如果你想要它是大写的,请使用std::uppercase.
operator<<具有非成员重载为char,signed char,和unsigned char.请参阅:uint8_t iostream行为.