Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 103
1

Бинарная запись в конец файла JPG и считывание

21.02.2014, 00:23. Просмотров 639. Ответов 3
Метки нет (Все метки)

Здравствуйте, задача поставлена такая: Написать 2 функции. Первая функция записывает бинарные данные в конец файлу к примеру .jpg. Вторая что бы считать файл с конца.
Мой наработанный материал...
C++
1
2
3
4
5
6
void JPG::writeToJpg()       // Записывает в файл
{
    ofstream fileWrite("Cherry.jpg", ios::binary | ios::ate);
    fileWrite.write((char*)&_password, sizeof(_password));
    fileWrite.close();
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string JPG::getPass()      // Считывает с файла
{
    string tmp;
    char symb;
    ifstream fileRead("Cherry.jpg", ios::binary);
    fileRead.seekg(-8, ios::end);      // Размер пока просто подгонял по записываемой строке
    for(int i = 0; !fileRead.eof(); i++)
    {
        if(!fileRead.read((char*)&symb, sizeof(char)))
            continue;
        tmp.push_back(symb);
    }
    return tmp;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2014, 00:23
Ответы с готовыми решениями:

Запись в конец файла
Доброго времени суток. Простенькая задачка: Есть вещественные числа, записанные в файл. Нужно...

Запись в конец файла
Создать текстовый файл message.txt (например в редакторе «Блокнот»), содержащий текстовое...

Считывание файла в массив и запись нового файла
Консоль VS C++. Текстовый файл открывается как бинарный, и считывается по 100 байт в массив - и...

Запись строки в конец файла
всем привет. подскажите пожалуйста, почему не работает этот код #include <iostream> #include...

3
5469 / 4864 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.02.2014, 00:54 2
Зачем посимвольно читать? Как записывали, так и читайте. Когда курсор будете передвигать, не применяйте в параметрх seekg(), sizeof(), а то проблемы будут с отрицательным смещением. Сначала величину смещения курсора вычислить (через sizeof()), потом передать это смещение, с отрицательным знаком, в seekg().
1
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 103
21.02.2014, 01:32  [ТС] 3
Изменил, выводит установленное слово как нужно. Но по окончании работы программы выводится окно с ошибкой которое постоянно грузится....
C++
1
2
3
4
5
6
7
8
9
string JPG::getPass()
{
    string tmp;
    char symb;
    ifstream fileRead("Cherry.jpg", ios::binary);
    fileRead.seekg(-_size, ios::end);     // _size - это поле класса которое принимает размер слова которое записано как _size = sizeof(_password);
    fileRead.read((char*)&tmp, sizeof(_password));  // _password - записанное в него слово, когда ставлю просто string, выдает ту же ошибку
    return tmp;
}
0
5469 / 4864 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
21.02.2014, 01:58 4
string не подходит для таких дел. Память под string, это не сама строка.

Добавлено через 2 минуты
Если нужно именно бинарное чтение\запись, используйте, вместо string, массивы char фиксированного размера.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2014, 01:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запись информации в конец файла
Доброго времени суток!Появилась небольшая проблема, помогите, пожалуйста.Необходимо записать...

Запись строки в конец файла
Надо записать строку в конец файла , Незнаю как ее написать.. void zap(char *str) { ...

Запись структуры в конец файла
Доброго времени суток. Подскажите, пожалуйста, как записать структуру в конец файла? Сначала...

Запись и считывание из файла
Написал 2 метода, один из них запись в файл, а другой соответственно считывание из него. Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.