C++ 读取二进制文件并以十六进制std::cin输出到std::cout

C++ 读取二进制文件并以十六进制std::cin输出到std::cout,c++,C++,我试图通过以下代码实现这一点: char c; while (std::cin >> c) std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<uint32_t>(c); charc; while(std::cin>>c) std::cout输入流操作符通常需要一个分隔符,您应该从文件中读取一个缓冲区,如图所示:,然后迭代内

我试图通过以下代码实现这一点:

char c;
while (std::cin >> c)
  std::cout << std::hex << std::setw(2) << std::setfill('0') << static_cast<uint32_t>(c);
charc;
while(std::cin>>c)

std::cout输入流操作符通常需要一个分隔符,您应该从文件中读取一个缓冲区,如图所示:,然后迭代内容并打印输出,您可能还希望使用
showbase
使十六进制输出更漂亮

编辑:尝试以下操作:

char c;
while(std::cin.get(c))
  ...

谢谢:),但不幸的是,我需要能够将其作为bashshell中管道链的一部分使用,因此我需要它通过stdin获取文件并打印到stdout的转换。有什么想法吗?@w00te:
read
istream
的成员函数,它是
std::cin
类型的基类。只是不要复制打开文件的示例代码的部分,因为您无法查找,所以您必须从稀薄的空气中选择缓冲区大小(或性能测试),并在循环中读取/写入块,直到流结束。再次感谢您,文件以二进制形式打开。在我的例子中,我是否需要做一些类似的事情来让程序知道cin流正在读取二进制文件?