0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
|
||||||||||||||||
1 | ||||||||||||||||
Файл произвольного доступа22.06.2009, 13:51. Показов 1472. Ответов 5
Метки нет (Все метки)
Здравствуйте, снова к файлам, такая задача.
Допустим, у меня есть текстовый файл с данными - код, название, количество, и со значениями по умолчанию - 0, пустая строка, 0, соответственно. Как здесь:
Метод write, хоть и пишет структуру полностью, т.е. размер известен, и становится возможным использование метода seekp, но, как уже упоминалось тут Записывается мусор в файл, пишет мусор в файл. Например, если я пишу так:
Как в этом случае поступить?
0
|
22.06.2009, 13:51 | |
Ответы с готовыми решениями:
5
Файл произвольного доступа Файл произвольного доступа Не могу прочитать файл произвольного доступа с конца Детектировать итератор произвольного доступа |
591 / 357 / 16
Регистрация: 06.02.2009
Сообщений: 1,386
|
|
22.06.2009, 13:59 | 2 |
Открой файл в двоичном режиме.
0
|
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
|
|
22.06.2009, 14:06 [ТС] | 3 |
0
|
22.06.2009, 14:07 | 4 | |||||
Если я правильно понял постановку задачи, то по простому её можно решить, задав фиксированный размер всем записям. Т.е. у тебя есть структура типа
Недостатки этого метода очевидны - ограничение на длину строки и необоснованное распухание файла: мы всегда пишем по 256 байт на строку, независимо от того, сколько в строке полезных символов. Более продвинутый вариант, это когда ты в начале работы считываешь ЦЕЛИКОМ свой файл. Обрабатываешь данные как надо, а затем ЦЕЛИКОМ файл записываешь. Недостатком этого метода является геморой при работе с большими файлами, особенно если содердимое файла целиком не влезает в память Ну и самый правильный вариант - это работать таким же образом, как работают системы упарвления базами данных. Тут надо долго разбираться с тем, как они организуют работу с хранением данный в файле и т.п. Поскольку у тебя врядли стоИт задача обрабатывать десятки гигабайт данных, то такой вариант для тебя отпадает
0
|
0 / 0 / 0
Регистрация: 24.09.2008
Сообщений: 26
|
|
22.06.2009, 14:28 [ТС] | 5 |
С такой реализацией понятно, спасибо, а вот более продвинутый вариант, считывающий файл целиком - можно поподробнее? Каким образом это осуществляется?
0
|
22.06.2009, 14:29 | 6 |
Ну ты как-то записываешь в файл набор записейи затем симметричным образом его считываешь. Просто в общем смысле я не могу, в чём у тебя непонятка. Лучше задай что-либо поконкретнее
0
|
22.06.2009, 14:29 | |
22.06.2009, 14:29 | |
Помогаю со студенческими работами здесь
6
Обработка файлов произвольного доступа Deque - сложность произвольного доступа Пишу итератор произвольного доступа Создание файла произвольного доступа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |