crossplatform.ru

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

QMainWindow
  опции профиля:
сообщение 10.8.2011, 16:53
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет!
Как удалить данные из файла? Файл текстовый, нужно удалить несколько строк, причем не заменить на пустые строки, а именно удалить. Как можно сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 11)
wiz29
  опции профиля:
сообщение 10.8.2011, 17:03
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


только пересохранением файла с таким же именем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 10.8.2011, 17:06
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(QMainWindow @ 10.8.2011, 22:53) *
Привет!
Как удалить данные из файла? Файл текстовый, нужно удалить несколько строк, причем не заменить на пустые строки, а именно удалить. Как можно сделать?

копированием во времянку, пропуском строк и переименованием времянки в текущее имя
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 10.8.2011, 17:21
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Хм, и так все программы работают?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 10.8.2011, 17:28
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(QMainWindow @ 10.8.2011, 23:21) *
Хм, и так все программы работают?

само собой. Разве что небольшие файлы просто переписывают заново с начала
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 10.8.2011, 19:13
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


А как с большими поступают?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 10.8.2011, 19:35
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(QMainWindow @ 11.8.2011, 1:13) *
А как с большими поступают?

уже говорилось. Копируется сколько надо во времянку и т.п. А для структурированных данных уже другой подход
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 11.8.2011, 10:34
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Понял. Почему же не придумали непосредственное удаление?

PS можно ли как-нибудь QTextStream указать номер строки, с которой необходимо считывать? Или до нужной строки надо доходить циклом вроде
for(i=0;i<index_of_my_line;i++) in.readLine();
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 11.8.2011, 11:13
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(QMainWindow @ 11.8.2011, 16:34) *
Понял. Почему же не придумали непосредственное удаление?

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

после изучения мат.части (последовательный доступ), первый вопрос отпадёт. Номер строки указать нельзя, если строки разной длины. Если одинаковой, что вряд ли, можно вычислить смещение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
QMainWindow
  опции профиля:
сообщение 11.8.2011, 11:15
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 1.8.2010
Пользователь №: 1922

Спасибо сказали: 0 раз(а)




Репутация:   0  


Значит только циклом проходить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 12.8.2011, 7:58
Сообщение #11


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(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 байта).


Сообщение отредактировал silver47 - 12.8.2011, 8:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 12.8.2011, 8:11
Сообщение #12


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(QMainWindow @ 11.8.2011, 17:15) *
Значит только циклом проходить?

только циклом. Для больших объемов данных используются базы и др. структурированные данные. Редакторы через времянки работают и буфера в памяти
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 27.6.2025, 23:24