HoRRoR, а можно как-то понятнее. Я вижу функция меняет название строк, как же её применить в этом случае:
int main()
{
ofstream test("abc.txt", ios::out);
rename("abc.txt","xyz.txt");
return 0;
}
Так ведь как я написал она не работает же. А, я уже понял почему, файл надо закрывать перед переименованием же.
Тот пример что там вообще мне не понятен
/* rename example */
#include <stdio.h>
int main ()
{
int result;
char oldname[] ="oldname.txt";
char newname[] ="newname.txt";
result= rename( oldname , newname );
if ( result == 0 )
puts ( "File successfully renamed" );
else
perror( "Error renaming file" );
return 0;
}
В первую очередь мне непонятно почему если у меня нет файла oldname.txt то мне пишет: Error renaming file: No such file or directory. Откуда взялись две точки и строка No such file or directory, их же нету в коде при ошибки чтения файла
Добавлено позже:Глупо только что эта rename возвращает 1 в случае не удачи, приходиться тогда помнить что возвращает 0 при неудаче, а что 1. Нет чтобы сделать чтобы любая функция возвращала при неудаче 0.
Добавлено позже:Ну и ещё тогда вопрос: какие функции есть для копирования и удаления файла?
Добавлено позже:Просто ведь
std::ofstream a("abc.txt",std::ios::app);
std::ofstream b("cde.txt",std::ios::out);
b=a;
Я смотрю сделать тут нельзя, конструктора копирования для файлов нет, а жаль, помоему ничто не должно было мешать сделать и логично было бы
Добавлено позже:Ах да, и ещё вопрос: что уходит на вывод когда мы отправляем файл на печать? какой-то 16ричный адрес я смотрю, но адрес чего это?
Добавлено позже:И ещё один вопрос (много что-то их у меня сегодня
):
какая конструкция является оптимальной когда надо провести цикл с условиями (if) и если условие за весь цикл так ни разу и не выполнилось то тогда выдать сообщение об ошибке (в виде сообщения в cerr например) ? Я делаю по принципу
bool переменная_для_проверки_выполнения_условия=true;
for()
{
if()
{
...
bool переменная=false;
}
}
if (bool переменная)
cerr<<Ошибка
А есть ли другая какая конструкция более удобная?