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

Флаги при работе с бинарными файлами - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.88
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
02.08.2012, 15:50     Флаги при работе с бинарными файлами #1
Всем привет!
Ребята, не могу понять почему у меня удаляются данные из файла.

Мне необходимо создать файл и потом в него дописывать данные. Проблема в том, что данные в файле удаляются при запуске программы.

Пытался пробовать ставить разные флаги не помогает. Подскажите, пжлста, что я делаю неправильно

Создание файла
C
1
2
3
4
5
fstream FileStreet ( L"Streets.dat",ios::binary  );
    if ( !FileStreet ) 
    {
        ErrorAddClient(L"Невозможно открыть файл\"Streets.dat\"!");
    }
Запись в файл

C
1
2
3
4
5
ofstream FileStreet (L"Streets.dat", ios::ate  );
    if ( !FileStreet ) 
        ErrorAddClient(L"Невозможно открыть файл\"Streets.dat\"!");
    FileStreet.write (reinterpret_cast<const char *>( &street ),sizeof( EditorStreet ) );
        InformationAboutEvent(L"Улица добавлена");
И периодично я в программе открываю файл для чтения

C
1
2
3
4
5
6
ifstream FileStreet ( L"Streets.dat", ios::binary | ios::in);
    if(!FileStreet)
    {
        ErrorAddClient(L"Невозможно открыть файл \"Streets.dat\"");
        return;
    }
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2012, 15:50     Флаги при работе с бинарными файлами
Посмотрите здесь:

Проблемы при работе с файлами C++
C++ Работа с бинарными файлами
C++ Работа с Бинарными файлами
C++ Информация по работе с бинарными файлами
Ошибка при работе с файлами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
02.08.2012, 22:28  [ТС]     Флаги при работе с бинарными файлами #41
Виноват! Конец дня... Спасибо большое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.08.2012, 22:35     Флаги при работе с бинарными файлами #42
И вопрос, вдогонку: зачем вам бинарное чтение-запись, если код у вас с текстом работает?
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
02.08.2012, 22:41  [ТС]     Флаги при работе с бинарными файлами #43
Мне прийдется обнулять данные, в частности, у меня есть в файле название улицы, а на форме есть кнопка "Удалить", буду заходить в файл и обнулять данные. Как - то так... Да, Вы лучше меня, знаете удобство бинарных файлов.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,578
Записей в блоге: 17
02.08.2012, 22:43     Флаги при работе с бинарными файлами #44
Ну а какое тут удобство? Для этого не нужен бинарник...
Храните данные в памяти там же делайте операции, периодически сохраняйте в файл.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
02.08.2012, 23:00  [ТС]     Флаги при работе с бинарными файлами #45
Вы правы, как - то не задумывался. Как Вы видите, я плохо разбираюсь с бинарными файлами, поэтому и хорошо что вожусь с ними. Спасибо.

Кстати, подскажите. Запись в файл string, создаю я переменную
Код
string str("");
, записываю в файл, а что писать
Код
FileStreet.write( reinterpret_cast<char *>( &str ), sizeof(str.size )
Код
 в sizeof (здесь)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 07:51     Флаги при работе с бинарными файлами
Еще ссылки по теме:

Задача с бинарными файлами C++
C++ Работа с бинарными файлами: какой способ работает наиболее быстро при записи и считывании?
Работа с бинарными файлами и структурами C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.08.2012, 07:51     Флаги при работе с бинарными файлами #46
Для начала определитесь, будете ли вы работать с расширенными символами. Если да, то не завывайте об этом. То есть, wfstream FileStreet("My file.txt", ios::app); (не ставьте L перед именем файла, MVSC это пропускает, другие (например, mingv) нет), wstring str; (пробелами string заполнять нет надобности, если же помещаете строковый литерал в wstring, то не забывайте ставить L перед кавычками), FileStreet << str; (один из способов записи строки в файл ). И почитайте, какие методы существуют в классе string (wstring), чтобы можно было с ними работать. Размер, получают так: str.size();
Yandex
Объявления
03.08.2012, 07:51     Флаги при работе с бинарными файлами
Ответ Создать тему
Опции темы

Текущее время: 04:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru