Advertisement
Guest User

Untitled

a guest
Jan 25th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <vector>
  2. #include <fstream>
  3. #include <iostream>
  4.  
  5. std::vector<bool> Read();
  6. void Write(std::vector<bool>& map);
  7.  
  8. int main()
  9. {
  10.     std::vector<bool> map;
  11.     map.resize(8);
  12.     map[0] = 1;
  13.     map[1] = 1;
  14.     map[2] = 0;
  15.     map[3] = 0;
  16.     map[4] = 0;
  17.     map[5] = 1;
  18.     map[6] = 1;
  19.     map[7] = 1;
  20.  
  21.     Write(map);
  22.     std::cout << "Write data :" << std::endl;
  23.     for (unsigned int i = 0; i < map.size(); i++)
  24.     {
  25.         std::cout << map[i] << " ";
  26.     }
  27.     map = Read();
  28.     std::cout << "\n" << "Read Data :" << std::endl;
  29.     for (unsigned int i = 0; i < map.size(); i++)
  30.     {
  31.         std::cout << map[i] << " ";
  32.     }
  33.     std::cout << "\n";
  34.     std::cout << map.size() << std::endl;
  35.    
  36.     return 0;
  37. }
  38.  
  39. std::vector<bool> Read()
  40. {
  41.     std::vector<bool> map;
  42.     std::ifstream fin("test.bin", std::ios::binary);
  43.     int size = 8 / 8.0f;
  44.     char * buffer = new char[size];
  45.     fin.read(buffer, size);
  46.     fin.close();
  47.     for (int i = 0; i < size; i++)
  48.     {
  49.         for (int id = 0; id < 8; id++)
  50.         {
  51.             map.emplace_back(buffer[i] << id);
  52.         }
  53.     }
  54.     delete[] buffer;
  55.     return map;
  56. }
  57.  
  58. void Write(std::vector<bool>& map)
  59. {
  60.     std::ofstream fout("test.bin", std::ios::binary);
  61.     char byte = 0;
  62.     int byte_index = 0;
  63.     for (size_t i = 0; i < map.size(); i++)
  64.     {
  65.         if (map[i])
  66.         {
  67.             byte |= (1 << byte_index);
  68.         }
  69.         byte_index++;
  70.         if (byte_index > 7)
  71.         {
  72.             byte_index = 0;
  73.             fout.write(&byte, sizeof(byte));
  74.         }
  75.     }
  76.     fout.close();
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement