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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Задать значение символьного массива http://www.cyberforum.ru/cpp-beginners/thread1223433.html
Доброго времени суток. У меня есть символьный массив char filename ; Этот массив содержит путь, формат и имя файла, который будет сохранен. Путь и формат постоянны, имя файла вводится с клавиатуры В итоге содержание переменной должно быть такого вида "Project/Image/*имя файла*.jpg". В итоге у меня получилось 3 массива char path="Project/Image/"; char name; char format=".jpg"; Имя...
C++ Реализация механизма обращения к двумерному массиву Приветствую участников форума. Есть у нас класс с указателем какого-то типа. Мы выделяем память под массив размера N. При этом мы можем, при помощи адресной арифметики, обращаться к нему как к многомерному массиву. Мой вопрос заключается в том, можно ли реализовать оператор так, что бы, обращаться к объекту можно было бы так: Array<int> a(25); a = 5; a = 5; Т.е. одновременно мы можем... http://www.cyberforum.ru/cpp-beginners/thread1223417.html
Вычисление функции на заданном промежутке C++
написать программу вычисления функции на заданном промежутке с шагом 0.2 и построить график этой функции
C++ Каким образом после чтения из файла, узнать позицию для чтения следующего куска байт
Здравствуйте, задача такова есть файл, размером 1000 байт, нужно открыть его считать 100 байт, после чтения закрыть. Потом опять открыть и считать уже другие 100 байт с другой позиции и т.д пока не дойдем до конца файла. Я так понимаю что бы узнать с какой позиции читать нужно 1000 : 100 = 10, получается 10 позиций правильно ли я предполагаю? Каким образом после чтения из файла, узнать позицию...
C++ Что за пустые шаблоны template <> struct/inline? http://www.cyberforum.ru/cpp-beginners/thread1223393.html
что за пустые шаблоны template <> за которыми следуют class/struct/inline? По многочисленным источникам в c++ шаблоны имеют вид, цитата с википедии: Шаблон функции начинается с ключевого слова template, за которым в угловых скобках следует список параметров. Затем следует объявление функции: template< typename T > void sort( T array, int size ); // прототип: шаблон sort объявлен, но...
C++ Игра "Жизнь"; Нужно, чтобы первое поколение задавалось оператором (с клавиатуры) Нужна помощь с решением задачи "Жизнь" на с++ Есть код программы, которая задает первое поколение колонии случайным образом. Но мне нужно, чтобы первое поколение задавалось оператором(с клавиатуры). Пробовал ввести массив в начало задачи, дает ввести только первое значение массива. Очень нужна помощь. Вот текст задачи: // ConsoleApplicationIgra.cpp: определяет точку входа для... подробнее

Показать сообщение отдельно
Акыл
6 / 6 / 0
Регистрация: 22.03.2012
Сообщений: 128
06.07.2014, 20:41     Запись в бинарный файл и чтение из него
Нужно записать в бинарный файл блоки, каждый по 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru