crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 6.8.2025, 5:07