| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Файловый ввод-вывод |
| Автор: Vex 22.5.2004, 23:05 | ||||
| Как удалить одну запись из файла: вот например:
ну записали мы туда несколько структур, теперь читаем:
Как мне удалить, например, пятую запись? Есть ли там вообще какие-то методы типа insert или delete? P.S. ну и гадость же этот с++ даже нет типизированых файлов, зато куча классов в которых и черт голову сломит, полная анархия |
| Автор: Guest 22.5.2004, 23:43 |
| Я не очень понял, про что вопрос, но постараюсь ответить. 1. создай массив структур, считывай все в массив, а потом пропускай ненужные элементы при записи или добавляй их. 2. можешь вместо файлов использовать СУБД. 3. можешь сам определить функции или методы методы типа insert или delete для своих структур и использовать их. |
| Автор: Vex 23.5.2004, 00:08 | ||||||
Не хочу заморачиваться с динамическими массивами, а С++ наверняка не поддерживает открытых массивов.
Исключено.
Наверное так и придется делать. З.Ы. Блин, сколько классов для одной простой цели (ввод-вывод в файл) а нет самых элементарных вещей |
| Автор: Anklav 23.5.2004, 02:32 | ||
Ну, написать класс такого динамического массива - это не проблема, на то он и C++. |
| Автор: Baa 23.5.2004, 02:38 |
| а почему нельзя использовать STL? vector или list |
| Автор: Гость00 23.5.2004, 06:47 | ||
Типизированный файл можно объявить, например, просто используя шаблоны basic_(if,of)stream Например, обычный ofstream объявляется как typedef basic_ofstream<char, char_traits<char>> ofstream; Можно вместо char поставить другой тип |
| Автор: Sined 23.5.2004, 11:38 | ||
Привет! Вот прогрммка, которая удаляет из заданной позиции файла задданое количество байт--один глюк правда, размер при этом не меняется
|
| Автор: Vex 23.5.2004, 11:47 | ||
Не я выбираю, что мне использовать Sined, о, то что надо, спасибо Дополнительные классы мне писать некогда, да и на сях я очень редко сижу, так что все хочется сделать быстро с помощью стандартных библиотек и не мучаться. |
| Автор: Baa 23.5.2004, 12:32 | ||
|
| Автор: Vex 24.5.2004, 23:08 |
| Baa, сенькс ;) Люди, подскажите аналог паскалевского Rewrite(); // запись файла с нуля З.Ы. 2Baa что-то нам с инетом не везет, часто падает, и аська стала глючной |
| Автор: Sined 24.5.2004, 23:11 |
| Не мог бы ты поподробнее сказать... Если просто отбросить содержимое файла например так fstream D2("file_name",ios::bin|ios::trunc); |
| Автор: Vex 24.5.2004, 23:57 |
| ОК, понятно. мне надо, чтобы при добавлении записи в файл старые данные исчезли. а не подскажите функцию удаления файла? З.Ы. извините, что всех уже замучал, просто из С++ под рукой есть только книга "Visual C++ 6.0 Для профессионалов" З.Ы модеры извините меня, но вопросы столь мелочные, что даже новую тему открывать не стоит, но если скажете, я все удалю и создам соответствующие топики. |
| Автор: chipset 25.5.2004, 01:12 |
| Vex Visual C++ 6.0 для профессионалов Круглински, Шеферд, Уингоу? Да классная книжка Ах да функция удаления файла... DeleteFile("file.txt"); Ещё exception'ами окружи, мало ли |
| Автор: sergejzr 25.5.2004, 03:08 | ||
Ну или на Анзи Си
|
| Автор: Vex 31.5.2004, 14:05 |
| Baa, нашел глюк в твоем коде, когда даные копируются, то во втором файле дублируется последняя запись, не подскажешь как исправить? Добавлено @ 14:06 еще не удаляется последняя запись. |
| Автор: Baa 1.6.2004, 02:47 | ||||
Так будет лучше... это беда в eof'е... кривой он
ну или, если уж охото тот вариант, то так:
|