Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Запись в бинарный файл и чтение из него - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задать значение символьного массива http://www.cyberforum.ru/cpp-beginners/thread1223433.html
Доброго времени суток. У меня есть символьный массив char filename ; Этот массив содержит путь, формат и имя файла, который будет сохранен. Путь и формат постоянны, имя файла вводится с...
C++ Реализация механизма обращения к двумерному массиву Приветствую участников форума. Есть у нас класс с указателем какого-то типа. Мы выделяем память под массив размера N. При этом мы можем, при помощи адресной арифметики, обращаться к нему как к... http://www.cyberforum.ru/cpp-beginners/thread1223417.html
Вычисление функции на заданном промежутке C++
написать программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции
C++ Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт, после чтения закрыть. Потом опять открыть и считать уже другие 100 байт с другой позиции и т.д пока не...
C++ Что за пустые шаблоны template <> struct/inline? http://www.cyberforum.ru/cpp-beginners/thread1223393.html
что за пустые шаблоны template <> за которыми следуют class/struct/inline? По многочисленным источникам в c++ шаблоны имеют вид, цитата с википедии: Шаблон функции начинается с ключевого слова...
C++ Игра "Жизнь"; Нужно, чтобы первое поколение задавалось оператором (с клавиатуры) Нужна помощь с решением задачи "Жизнь" на с++ Есть код программы, которая задает первое поколение колонии случайным образом. Но мне нужно, чтобы первое поколение задавалось оператором(с клавиатуры).... подробнее

Показать сообщение отдельно
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128

Запись в бинарный файл и чтение из него - C++

06.07.2014, 20:41. Просмотров 546. Ответов 2
Метки (Все метки)

Нужно записать в бинарный файл блоки, каждый по 512 байт. Структура блока: Слово Число. На слово отводится 508 байт, на число 4. После записи их надо иногда считывать обратно, но у меня ничего не получается, делаю так:
Запись
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
void MFile::writeBlock(DataBlock block)
{
    ofstream file;
    file.open(FORMATED_BASE_FILE_NAME, ios::out | ios::binary);
    file.write(block.getWordArray(), 508);
    int count;
    count = block.getCount();
    file.write(reinterpret_cast<const char*>(&count), sizeof(int));
    file.close();
}
Чтение:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DataBlock MFile::readBlock(int position)
{
    char buffer[508];
    int count=0;
    
    ifstream file (FORMATED_BASE_FILE_NAME, ios::in | ios::binary);
    file.seekg(position*512);
    file.read(buffer, 508);
    file.read(reinterpret_cast<char*>(&count), sizeof(int));
    string word(buffer);
    DataBlock block(word, count);
    file.close();
    return block;
 
}
Класс DataBlock:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef DATABLOCK_H
#define DATABLOCK_H
 
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include <cstdlib>
 
using namespace std;
 
static const int BLOCK_SIZE = 512;
 
class DataBlock
{
private:
    string mWord;
    int mCount;
public:
    DataBlock();
    DataBlock(string word, int count);
 
    string getWord();
    char* getWordArray();
    int getCount();
 
    void setBlock(string word, int count);
 
 
};
 
#endif // DATABLOCK_H
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru