![]() |
|
Модераторы: bsa |
![]()
|
|
| PascalC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 19.10.2008 Репутация: нет Всего: нет |
Подскажите, как можно добавлять строку не в конец файла, а в начало?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Увеличить размер файла на длину строки, сдвинуть все содержимое файла от начала на размер строки, а в начало вставить свою строку.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Добавление данных не в конец файла операция нетривиальная. Для этого нужно, как сказал Alexeis, сначала выделить место в файле. Чтобы это сделать, нужно увеличить размер файла и сдвинуть все имеющиеся данные в конец этого файла... Как вариант, можно создать другой файл, записать в него вставляемые в начало данные, затем скопировать содержимое старого файла, удалить старый файл, переименовать новый.
|
|||
|
||||
| PascalC |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 19.10.2008 Репутация: нет Всего: нет |
Тогда первая строка затрется Спасибо, это приходило в голову, но думал есть стандартная операция. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
тогда не катит.
а не будет ли преступлением слить содержимое в STL контейнер(тот же вектор), вставить новую строку в его начало и перезаписать все это в старый файл? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Годиться, но этот метод имеет ограничения, по использованию памяти + перераспределение памяти при вставке и сдвиг копированием элементов. Лучше уж List, только опять же разбор файла на строки, выделение памяти под полный объем. Короче тяжелая артиллерия для простой линейной задачи. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |