Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ofstream, Записть в произвольное место 
V
    Опции темы
Vasya
Дата 18.5.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 5.7.2003

Репутация: нет
Всего: нет



Добрый день!

Есть такая задача

Добавить в конец файла какие-нибудь данные, затем откатить текущую позицию для записи немного назад и записать снова что-то поверх уже записанной информации. Ожидается, что размер файла будет расти, т.е. в файл будут добавляться данные. Но размер файла не изменяется, поскольку каждый раз при открытии файла позиция для записи оказывается в начале, хотя явно сказано: out.seekp(0, ios::end);
Реализация:

Код

void appenddata()
{
int sizeof_buffer1 = 1000, sizeof_buffer2 = 100;
char *buffer1 = new [sizeof_buffer1], *buffer2 = new char[sizeof_buffer2];

ofstream out("file", ios:out | ios::binary | ios::ate);
out.seekp(0, ios::end);
out.write(buffer1, sizeof_buffer1);
out.seekp((int)out.tellp() - 100);
out.write(buffer2, sizeof_buffer2);
out.close()
}


В чем тет прикол? В режиме ios::app данные добавляются, но seekp() уже не работает smile

Это сообщение отредактировал(а) Vasya - 18.5.2012, 14:18
PM MAIL   Вверх
bsa
Дата 18.5.2012, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Vasya, попробуй открыть в режиме чтения-записи (ios::in | ios::out | ...).
PM   Вверх
Vasya
Дата 19.5.2012, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 5.7.2003

Репутация: нет
Всего: нет



Не знаю правильно ли, но пока решил проблему так: сначала файл открываю в режиме ios::app, добавляю данные , потом снова открываю уже без этой опции и меняя позицию пишу где только можно. Не нравится тут только то, файл открываю дважды. Буду набираться опыта  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.