crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Удаление данных из файла
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
maint Дата 12.8.2011, 8:11
 
Цитата(QMainWindow @ 11.8.2011, 17:15) *
Значит только циклом проходить?

только циклом. Для больших объемов данных используются базы и др. структурированные данные. Редакторы через времянки работают и буфера в памяти
silver47 Дата 12.8.2011, 7:58
 
Цитата(QMainWindow @ 11.8.2011, 14:15) *
Значит только циклом проходить?


Не поленитесь, прочтите любую книгу по С++ касательно работы с файлами. Все вопросы сразу же отпадут. Кратко: если знаете сколько символов нужно пропустить то можно и воспользоваться смещением. Если же нет, то только последовательное чтение.

QFile file;
...
// читаем все в QByteArray а там уже потрошим
QByteArray ba(file.readAll());
// или же построчно просматриваем файл
int i(0);
while(!file.atEnd()){
    qDebug() << "String number:"<< ++i << file.readLine();
}
// если же Вы знаете с каких позиций читать, а с каких нет, то:
file.seek(qint64); // перемещаем курсор в файле на заданную позицию(будьте внимательны в UTF-8 каждый текстовый символ - 2 байта).
QMainWindow Дата 11.8.2011, 11:15
  Значит только циклом проходить?
maint Дата 11.8.2011, 11:13
 
Цитата(QMainWindow @ 11.8.2011, 16:34) *
Понял. Почему же не придумали непосредственное удаление?

PS можно ли как-нибудь QTextStream указать номер строки, с которой необходимо считывать? Или до нужной строки надо доходить циклом вроде
for(i=0;i<index_of_my_line;i++) in.readLine();
?

после изучения мат.части (последовательный доступ), первый вопрос отпадёт. Номер строки указать нельзя, если строки разной длины. Если одинаковой, что вряд ли, можно вычислить смещение.
QMainWindow Дата 11.8.2011, 10:34
  Понял. Почему же не придумали непосредственное удаление?

PS можно ли как-нибудь QTextStream указать номер строки, с которой необходимо считывать? Или до нужной строки надо доходить циклом вроде
for(i=0;i<index_of_my_line;i++) in.readLine();
?
maint Дата 10.8.2011, 19:35
 
Цитата(QMainWindow @ 11.8.2011, 1:13) *
А как с большими поступают?

уже говорилось. Копируется сколько надо во времянку и т.п. А для структурированных данных уже другой подход
QMainWindow Дата 10.8.2011, 19:13
  А как с большими поступают?
maint Дата 10.8.2011, 17:28
 
Цитата(QMainWindow @ 10.8.2011, 23:21) *
Хм, и так все программы работают?

само собой. Разве что небольшие файлы просто переписывают заново с начала
QMainWindow Дата 10.8.2011, 17:21
  Хм, и так все программы работают?
maint Дата 10.8.2011, 17:06
 
Цитата(QMainWindow @ 10.8.2011, 22:53) *
Привет!
Как удалить данные из файла? Файл текстовый, нужно удалить несколько строк, причем не заменить на пустые строки, а именно удалить. Как можно сделать?

копированием во времянку, пропуском строк и переименованием времянки в текущее имя
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 27.4.2024, 22:36