Есть ли в С++ функция удаления файла?

Snakehop

удаления какого либо файла?

kliM

#include <cstdio>
void main
{
remove("file.txt");
}

Snakehop

Спасибо

Ace_Portgas

system ("del file.txt");

kliM

под линухом это не заработает, а remove - функция универсальная

yurimedvedev

#include <stdio.h>
void main{
unlink("c:\\autoexec.bat");
}
функция unlink должна работать даже в линуксе (я так думаю).

Snakehop

а еще для удаления слова из файла?

kliM

вообще-то unlink в стандарте не упоминается. И то что ты написал, не будет работать ни под юнихом (потому что путь виндовый ни под виндой (потому что там нет хедера unistd.h).
По правде сказать, в VC есть функция _unlink, добавленная для совместимости с юнихами, но все равно тут без #ifdef'ов не обойтись

kliM

это как?

Snakehop

есть файл.
в нем три слова А, В и С.
хочу удалить В.
как это сделать?

kliM

ну функции такой, конечно, нету.... можно так:
1. открываешь файл
2. читаешь строку
3. Пока есть матерное слово - удаляешь
4. пишешь строку в другой файл
5. если файл не кончился, гоуту 2
6. закрываешь файлы
7. remove(первый файл)
8. rename(второй файл, первый файл)

Snakehop

не поняла пункт 3. Пока есть матерное слово - удаляешь

kliM

ищешь в строке слово, если нашлось - вырезаешь его оттуда и так повторяешь, пока слово находится

Snakehop

а как вырезать то?

lodanap

Нефиг что попало в файл писать...

Snakehop

дык, если б я написала...
лучше подскажи что-нить

kliM

как удалить одну подстроку:
string line="idi ty na censored!", word="censored";
cout << "Original line=" << line << endl;
cout << "Word=" << word << endl;
string::size_type pos=line.find(word);
if(pos!=-1) // нашли
line=line.substr(0, pos)+line.substr(pos+word.size;
cout << "Censored line=" << line << endl;
только тут ищется подстрока, тебе надо еще проверять, что это - слово, а не часть какого-то другого слова

geva

Я подавился пивом когда сопоставил ник и название треда..

Snakehop

Как все сложно...! я еще не достигла такого уровня...
может попроще можно просто в С, без ++ ?
я скоро сума сойду, товарищи!

geva

а в С я писал такое, только у меня суммарно на две страницы было.

kliM

да ладно, все делается в 3 строчки, остальные просто выводят текст на экран

yurimedvedev

Пишите на Perl'e - там поиск подстроки в строке писать гораздо меньше времени, чем в C.
И команда unlink там работает, и совместимость Win и Linux лучше, чем в C.

kliM

Угу, классная мысль - писать практикумы по Си++ на пёрле
препод оценит!

CrazyProg

И команда unlink там работает
тока под виндой не всегда почему-то

illegal

А replace уже не канает?

kliM

канает:
line=line.replace(pos, word.size "", 0);
Оставить комментарий
Имя или ник:
Комментарий: