Очистить файл
Очистить файл
Как через класы потоков очистить открытый файл? 32 строка вроде ф-ция для очистки, но она не.
Очистить текстовый файл
есть функция сохранения в файл.. int out_file(char* filename,date* cor) < fstream.
Как очистить файл с вводом множества объектов?
Доброго времени суток! Написал код с вводом множества объектов. Ввожу объекты. Потом , понятное.
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
file = open( "filename", std::ios::in | std::ios::out ); |
Регистрация: 09.09.2011
Сообщений: 40
файл Я открывал так
std::fstream file("c:\\pass.txt",ios_base::in|ios_base::out);
или смысл ответа в другом?
Добавлено через 4 минуты
видимо проще всего так
while ((c = file.get()) != EOF){}
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
Сообщение от ganjawar 
или смысл ответа в другом?
В другом.
Файл переоткроется для записи, т.е. очиститься(вам ведь это надо?), и для считывания(но т.к. он пустой, то считывать будет нечего).
P.S. если вы ничего в файл не пишите во время выполнения программы, то он и так пустой будет(из-за ios::out очистится).
P.P.S. неправильно написал немного, open — не функция, а метод.
Т.е. писать нужно так
file.open( "filename", std::ios::in | std::ios::out );
Хотя что-то не то я говорю видимо, секунду.
А, нет, все правильно, нужно просто не забыть закрыть файл.
Что-то вроде такого
1 2 3 4 5
std::fstream in("input.txt", std::ios::in); //в файле что-то есть in.close(); in.open("input.txt", std::ios::out | std::ios::in); //файл пуст
геморно без компилятора все-таки.
Удаления из файла данных (C++)
например я хочу удалить от туда запись Bobik или любую другую .
как можно сделать ? может сущетвует кой алгоритм удаления или надо мудрувать ?
15 ответов
29 октября 2007 года
256 / / 11.11.2005
Алгоритм зависит от того, по каким критериям ты будешь удалять запись: по номеру или по совпадению строк
Так что давай конкретнее
29 октября 2007 года
140 / / 11.09.2007
Алгоритм зависит от того, по каким критериям ты будешь удалять запись: по номеру или по совпадению строк
Так что давай конкретнее
впринцыпе все равно:p и вариант с удалением по сурагатному ключу или по совпаденю строк подходит
29 октября 2007 года
256 / / 11.11.2005
#include
#include
#include
using namespace std;
int main()
ifstream in («test.dat», ios::in);
ofstream out(«test.new», ios::out);
char buff[256];
int num,i;
Алгоритм по совпадению строк отличается парой-тройкой строк
30 октября 2007 года
140 / / 11.09.2007
max_dark спасибо за код.
я наверлно не правильно обяснил, по номеру строки не подходит.
лучше уж по совпадению строки:)))
30 октября 2007 года
1.0K / / 08.01.2007
30 октября 2007 года
140 / / 11.09.2007
m_Valery Спасибо 🙂
с кодом разобрался, только не смог асилить что значит это:
int _tmain(int argc, _TCHAR* argv[])
почему в вместо main() стоит _tmain и что за фишки: (int argc, _TCHAR* argv[])
30 октября 2007 года
1.0K / / 08.01.2007
Можешь вместо int _tmain(int argc, _TCHAR* argv[]) использовать
int main().int argc и _TCHAR* argv[]) — параметры командной строки. argc — количество параметров,argv — строки,представляющие отдельные значения. Смотри об этом подробнее в учебниках.В Visual Studio 2003,2005 используется int _tmain,в 6-й была просто main.
30 октября 2007 года
140 / / 11.09.2007
кстати а как вам такой вариант:
что на самом деле с файла ничего удалятся не будет
а только будут высавлястся статусы.
Tuzik <отступ>T
Shurik <отступ>T
Bobik <отступ>F
Sharik <отступ>T
Ivanov <отступ>Fотступ>
там где F то значит что они «мертвые».
а там где T то значит что они «живые».
а в самой проге будет функция которая проверяет статусы и работает только с «живыми» пользователями . и функция по удалению, которая по сути статусы меняет на F
как такая идея, что скажите ?
—
это я делаю примочки к этому заданию:
http://forum.codenet.ru/showthread.php?t=42495
30 октября 2007 года
256 / / 11.11.2005
С такой структурой можно будет «воскрешать мертвецов» 😉
Если кого прибил по ошибке.
31 октября 2007 года
100 / / 04.09.2007
кстати а как вам такой вариант:
что на самом деле с файла ничего удалятся не будет
а только будут высавлястся статусы.
Tuzik <отступ>T
Shurik <отступ>T
Bobik <отступ>F
Sharik <отступ>T
Ivanov <отступ>Fотступ>
там где F то значит что они «мертвые».
а там где T то значит что они «живые».
а в самой проге будет функция которая проверяет статусы и работает только с «живыми» пользователями . и функция по удалению, которая по сути статусы меняет на F
как такая идея, что скажите ?
main()
ofstream out(«dogs.dat»,ios::app);
char *name = new char[15];
char status;
в этом примере ты записываешь имя и статус, и читаешь имя и статус в отдельные переменные, и потом в цикле можешь сравнивать статус и вызывать функцию обработку с собаками
01 ноября 2007 года
49 / / 15.10.2006
Можно функции read и write использовать, они записывают в файл структуры в текстовом виде, и соответственно могут удалять структуры
06 декабря 2007 года
2 / / 06.12.2007
Помогите написать похожую прогу плз.
Программа должна удалять запись по совподению строк, но тока в файле в котором нужно удалить данные не один столбец, а 5.
Программа которая приведена в этой теме работает только если в файле один столбец.
07 декабря 2007 года
1.0K / / 08.01.2007
Помогите написать похожую прогу плз.
Программа должна удалять запись по совподению строк, но тока в файле в котором нужно удалить данные не один столбец, а 5.
Программа которая приведена в этой теме работает только если в файле один столбец.
Построчно считываем файл в вектор.Вводим слово.которое хотим удалить,удаляем его и перезаписываем файл.Например так.
Как очистить файл с fstream
подскажите как очистить текстовый файл.
fstream file
то есть сделать чтоб он был пустым?
подскажите как удалить файл?
всем заранее спасибо!
Есть кнопка «Редактировать»
Последний раз редактировалось merax; 28.11.2007 в 23:21 .
Пользователь
Регистрация: 20.09.2007
Сообщений: 99
Сообщение от BeeX
подскажите как удалить файл?
всем заранее спасибо!
#include
int remove( const char * fname )
Стирает файл, возвращает 0 в случае успеха.
Еще один такой же, кнопку «Редактировать юзайте»
Голова человеку дадена — не токмо шапку носить!
Последний раз редактировалось merax; 28.11.2007 в 23:23 .
Регистрация: 21.11.2007
Сообщений: 8
!
Сообщение от Adamant
#include
int remove( const char * fname )
Стирает файл, возвращает 0 в случае успеха.
а ты не знаешь как файл опустошить?
Пользователь
Регистрация: 20.09.2007
Сообщений: 99
FILE * fopen( «fname», «w» )
Существующий файл с указанным именем будет стерт, а вместо него будет открыт новый файл (с тем же именем). Если файла с указанным вами именем не существует, он будет создан.
P.S. Позволю себе дать вам дружеский совет: если я не ошибаюсь, вы начали изучение сразу с C++. Не пожалейте месяца изучите хотя бы базовый курс простого Си. Убежден, не пожалеете!
С наилучшими пожеланиями.
Голова человеку дадена — не токмо шапку носить!
Регистрация: 21.11.2007
Сообщений: 8
эээ
[QUOTE=Adamant;51607]
FILE * fopen( «fname», «w» )
Существующий файл с указанным именем будет стерт, а вместо него будет открыт новый файл (с тем же именем). Если файла с указанным вами именем не сущес. QUOTE]
У меня Билдер пишет хрень какуюто: «can not convert char * to file *»,
причем тут чар? Не знаете что за ошибка?
Пользователь
Регистрация: 20.09.2007
Сообщений: 99
FILE *fp;
if( ( fp = fopen( «C:/Papka/file.txt», «w» ) ) == NULL )
puts( » Чего-то я не могу ваш файл открыть?!» );
getch();
exit();
>
fclose( fp );
puts( «А файл то уже пустой! «);
Голова человеку дадена — не токмо шапку носить!
Пользователь
Регистрация: 01.11.2007
Сообщений: 33
Сообщение от Adamant
FILE * fopen( «fname», «w» )
P.S. Позволю себе дать вам дружеский совет: если я не ошибаюсь, вы начали изучение сразу с C++. Не пожалейте месяца изучите хотя бы базовый курс простого Си.
Некоторые считают что Си может помешать правильному восприятию Си++ изначально так сказаать збитть с толку, хотя я не согласен. в принципе fstream может делать все что и FILE так что
fopen( "fname", "w" )
эквивалентно
file.open( "fname", ios::out )
Последний раз редактировалось PuzzleC; 26.11.2007 в 06:51 .
Пользователь
Регистрация: 20.09.2007
Сообщений: 99
Сообщение от PuzzleC
Некоторые считают что Си может помешать правильному восприятию Си++ изначально так сказать сбить с толку, хотя я не согласен.
В этом есть рациональное зерно: все таки разное мышление. В Си — структурное, а в Си с плюсами все таки преимущественно объектно-ориентированное. Но на мой взгляд знание «простых Сей» лишним ни в коем случае не будет. Лично из моего опыта по самостоятельному изучения: ( если это кому-нибудь будет интересно). Начал изучать сразу с Сей с плюсами, как мне тоже посоветовали, но через месяц бросил (многое не мог понять), начал с Си (правда уже была база знаний в PHP), после этого у меня все пошло как по маслу, правда действительно иногда давало о себе знать структурное мышление, но оно со временем перестает доминировать). Еще раз подчеркиваю, это сугубо мое мнение, которое может не совпадать с вашим.
С уважением.
Голова человеку дадена — не токмо шапку носить!
Пользователь
Регистрация: 25.03.2007
Сообщений: 67
ifstream
Может немного не по теме, но если использовать namespase std, и обьявлять переменную тима ifstream, то после того как мы доходим до конца файла (-1 позиция) фаил становиться аьсолютно не доступен, т.е. его нельзя не закрыть функция close.filename и похицию поменять тоже нельзя seekg.filename пока я с правляюсь с этой проблемой просто записывая всё содержимое файла в стринговую переменную, но хотелось бы услышать возможность РЕШЕНИЯ проблемы а не её ОБХОЖДЕНИЯ как в моём случае
Как очистить файл используя файловые потоки ввода вывода не закрывая его?
Хочу открыть файл записать в него строку, потом, не закрывая файл, начать запись заново, так чтобы старая информация удалилась:
std::ofstream file; file.open("file.txt", std::ios_base::in | std::ios_base::out); file
В результате получаю 1A а должно быть 1
Отслеживать
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков
задан 27 сен 2017 в 4:53
Rikitikitavi Rikitikitavi
2,409 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
Вроде нельзя не закрывая файл
27 сен 2017 в 5:45
Если б было можно добраться до дескриптора файла, то может, мог бы спасти (нестандартный) chsize() .
27 сен 2017 в 5:53
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Стандартными средствами - никак.
Нестандартно - нужно получить файловый объект basic_filebuf с помощью rdbuf() , и в нем в конкретной реализации докапываться до файлового объекта - например, в VC++ - это закрытый член FILE* _Myfile . Если всяческими грязными хаками 🙂 добраться до него, то можно вызвать chsize(fileno(_Myfile)) . Но! это ОЧЕНЬ чревато неприятностями - как минимум работой через голову самого basic_filebuf , который, не подозревая о внесенных изменениях в состояние, может выдать совершенно неожиданное поведение.
Да и не стоит эта овчинка выделки. Зная, где должен заканчиваться файл - откройте новый и перепишите в него только нужное. Будет и надежнее, и проще.
Отслеживать
ответ дан 27 сен 2017 в 6:05
218k 15 15 золотых знаков 117 117 серебряных знаков 229 229 бронзовых знаков
- c++
- файлы
- fstream
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.