如何在c ++中读取二进制数据?

Mah*_*ine 8 c++ file-io

我需要用C++读写二进制数据.我使用from ofstreamifstreamclasses但它不能读取像9,13,32这样的字符.如果有另一种方法来读写主题.

Stu*_*etz 6

使用打开文件std::ios::binary标记,然后用readwrite,而不是流操作符.

这里有一些例子:

http://www.cplusplus.com/reference/iostream/istream/read/

http://www.cplusplus.com/reference/iostream/ostream/write/

  • @mehdi,他给你提供了文档和示例.你还想要什么? (2认同)

Omn*_*ous 5

这是一个执行此操作的程序:

#include <iostream>
#include <fstream>

int main(int argc, const char *argv[])
{
   if (argc < 2) {
      ::std::cerr << "Usage: " << argv[0] << "<filename>\n";
      return 1;
   }
   ::std::ifstream in(argv[1], ::std::ios::binary);
   while (in) {
      char c;
      in.get(c);
      if (in) {
         ::std::cout << "Read a " << int(c) << "\n";
      }
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是在 Linux 中运行的示例:

$ echo -ne '\x9\xd\x20\x9\xd\x20\n' >binfile
$ ./readbin binfile 
Read a 9
Read a 13
Read a 32
Read a 9
Read a 13
Read a 32
Read a 10
Run Code Online (Sandbox Code Playgroud)

  • 偏执的命名空间解析!:-) (15认同)