gpt4 book ai didi

c++ - std::copy raw data to cout in hex format using ostream_iterator 打印出未格式化的数据。为什么?

转载 作者:太空狗 更新时间:2023-10-29 19:58:04 26 4
gpt4 key购买 nike

想法是有一个包含任意二进制数据的 vector ,并将它包含的字节以十六进制表示法输出到标准输出。我使用 std::copy 将字节从输入 vector 复制到标准输出。问题是代码打印出 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));

应用程序打印出“0hello”。我希望它打印出“68656C6C6F”。会是什么情况?

最佳答案

简单的改变,使用int而不是 uint8_t :

std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout));

如果需要大写,请使用 std::uppercase .

operator<<non-member overloads对于 char , signed char , 和 unsigned char .请参阅:uint8_t iostream behavior .

关于c++ - std::copy raw data to cout in hex format using ostream_iterator<uint8_t> 打印出未格式化的数据。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26430456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com