Reading a Binary File into a bitset or vector

后端 未结 2 478
面向向阳花
面向向阳花 2021-01-19 14:38

How do I read a binary file into a bitset or vector? The binary file will vary in length. Is there a better container for this? I am ne

相关标签:
2条回答
  • 2021-01-19 15:02

    If the file is large, Why should you read once, whole the file into the memory?

    You can read a little piece every time. The size is determined with the size in this func:

    file.read(buff, size)
    

    When the buff is char's array.

    I'm sorry, but You can't simplest read/save vector to file. for more details see here and here.

    And use Google, It's very helpful...

    0 讨论(0)
  • 2021-01-19 15:28

    You didn't give too much context of what you're trying to do in your question. But here's one quick & dirty way to do it:

    #include <iterator>
    #include <fstream>
    #include <vector>
    #include <assert.h>
    using namespace std;
    
    const char *filename = "foo.bar";
    int main()
    {
      vector<bool> v;
      ifstream binary_file(filename, ios::binary);
    
      assert(binary_file);
      copy(istream_iterator<unsigned char>(binary_file),
           istream_iterator<unsigned char>(),
           back_insert_iterator< vector<bool> >(v));
    }
    

    Reading the zero-byte '\0' character into the vector will be false. Any other bytes read in will be treated as true.

    0 讨论(0)
提交回复
热议问题