wohyperion

Динамический список и двоичные файлы v.2

Dec 15th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. /*
  2.  * 15.12.2016
  3.  * Обработка динамического списка std::list
  4.  * Запись и чтение его элементов в двоичный файл
  5.  * Первая строка в файле указывает на количество записей
  6. */
  7.  
  8. #include <iostream>
  9. #include <list>
  10. #include <fstream>
  11.  
  12. using namespace std;
  13.  
  14. int main()
  15. {
  16.     fstream bin("bin.txt", ios_base::binary | ios_base::out | ios_base::in);
  17.     //Инициализируем количество записей нулем
  18. //    int z = 0;
  19. //    bin.write((char*)&z, sizeof(int));
  20.  
  21.  
  22.     int size, temp;
  23.     list<int> l;
  24.  
  25.     cout << "Input numbers: ";
  26.     while (cin >> temp)
  27.         l.push_back(temp);
  28.  
  29.     bin.read((char*)&size, sizeof(int));
  30.     size += l.size();
  31.     bin.seekp(0, ios_base::beg);
  32.     bin.write((char*)&size, sizeof(int));
  33.  
  34.     bin.seekp(0, ios_base::end);
  35.     for (list<int>::iterator i = l.begin(); i != l.end(); i++)
  36.     {
  37.         temp = *i;
  38.         bin.write((char*)&temp, sizeof(int));
  39.     }
  40.  
  41.     bin.seekg(0, ios_base::beg);
  42.     int rSize;
  43.     list<int> rl;
  44.  
  45.     bin.read((char*)&rSize, sizeof(int));
  46.  
  47.     for (int i = 0; i < rSize; i++)
  48.     {
  49.         bin.read((char*)&temp, sizeof(int));
  50.         rl.push_back(temp);
  51.     }
  52.  
  53.     bin.close();
  54.  
  55.     cout << "Size: " << rSize << endl;
  56.     cout << "List from binary file: ";
  57.     for (list<int>::iterator i = rl.begin(); i != rl.end(); i++)
  58.         cout << *i << ' ';
  59.  
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment