Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [Решено]C++. Количество объектов в двоичном файле.  (Прочитано 3311 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CitiЯen

  • Автор темы
  • Участник
  • *
  • Сообщений: 138
  • Ubuntu Natty + OB
    • Просмотр профиля
Здравсвуйте. Есть класс:
class PhoneBook
{
  friend int ReadFromBinary(PhoneBook TempArray[], int nMax);
  public:
    PhoneBook();
    void EditData();
    char* GetData(char nChoise);
  private:
    char szName[25];
    char szFirstName[25];
    char szPhone[11];
    char szMobilePhone[12];
};

Есть функция.
//  Функция пишет из двоичного файла в массив объектов класса, если
//+ файл открыть не удалось возвратит 1, int nMax)иначе 0
int ReadFromBinary(PhoneBook TempArray[])
{
  unsigned int nMax = 0;

  // Экземпляр класса fstream
  fstream BinaryBook;

  // Открываем бинарный файл на чтение
  BinaryBook.open("PhoneBook.bin", ios::binary | ios::out);

// Узнать количество????

  BinaryBook.close ();

  BinaryBook.open("PhoneBook.bin", ios::binary | ios::out);

  if(!BinaryBook)
  {
    cout << "He удается открыть файл.\n";
    return 1;
  }
    else
    {
      cout << "Открыт на запись успешно!\n";
      for(int nCount = 0; nCount < nMax; nCount++)
      {
        if (BinaryBook.read((char *) &TempArray[nCount] , sizeof TempArray[nCount] ))
        {
          cout << "Запись: " << nCount << " - Успех!\n";
        }
        else
        {
          cout << "Запись: " << nCount << " - Провал!\n";
        }
  }
      return 0;
    }

  BinaryBook.close ();
}

Как найти количество записей?
« Последнее редактирование: 13 Апреля 2011, 18:54:18 от CitiЯen »

Оффлайн Мангуст

  • Любитель
  • *
  • Сообщений: 98
    • Просмотр профиля
Re: C++. Количество объектов в двоичном файле.
« Ответ #1 : 13 Апреля 2011, 17:52:36 »
Размер файла (в Гугле есть как узнать) поделить на sizeof(PhoneBook).

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: C++. Количество объектов в двоичном файле.
« Ответ #2 : 13 Апреля 2011, 17:56:39 »
справедливо только для POD типов

Оффлайн CitiЯen

  • Автор темы
  • Участник
  • *
  • Сообщений: 138
  • Ubuntu Natty + OB
    • Просмотр профиля
Re: C++. Количество объектов в двоичном файле.
« Ответ #3 : 13 Апреля 2011, 18:53:07 »
Спасибо огромное.
 long size = 0;

  BinaryBook.seekg (0, std::ios::end);
  size = BinaryBook.tellg();
  BinaryBook.seekg (0, std::ios::beg);

  cout << sizeof(PhoneBook) << '\n';
  cout << size << '\n';

Работает. Заодно узнал про POD-типы)

 

Страница сгенерирована за 0.051 секунд. Запросов: 25.