我做了一个函数,首先读取文件并检查它是否存在,然后在确认后将其删除,但如果我直接喜欢
remove("a.text");
它会删除名为a.txt的文件,但当我使用函数
int deletediary()
{
string searchfilename;
cout<<"\nPlease enter the filename to be searched\n";
cin>>searchfilename;
searchfilename.append(".txt");
fileread.open(searchfilename.c_str());
if(!fileread){
cout<<"\nERROR :Either you didn't enter an invalid date or you entered an date with no entry\n\n";
A :
cout<<"Continue to search? (y/n)\n";
if(getch()=='y')
{
modifydiary();
}
else if(getch()=='n')
{
menuview();
}
else
{
cout<<"Enter Correct Option\n";
goto A;
}
}
else{
system("cls");
int i;
B :
cout<<"Are you sure you want to remove this diary entry? (y/n)";
if(getch()=='y')
{
remove(searchfilename.c_str());
}
else if(getch()=='n')
{
menuview();
}
else
{
cout<<"Enter Correct Option\n";
goto B;
}
cout<<"INFO :Deleted!!!";
system("pause");
menuview();
}
它只检查文件名但不删除它。
5条答案
按热度按时间3mpgtkmj1#
在
c++17
中,我们有filesystem库,它提供了轻松处理问题的工具。示例:
yfwxisqw2#
您忘记关闭已打开的文件。因此,关闭文件,它应该可以工作。
注:该解决方案适用于@AkhileshSharma,并将评论作为答案,以回答问题。
camsedfj3#
当你尝试删除一个文件时,你应该立即处理remove函数的返回值。如果成功,它返回
0
,如果失败,它返回非零值。remove
在stdio.h
文件中strerror
在string.h
中因此,在执行
remove
函数之后,请检查它没有被删除的原因。错误号存储在
errno
变量中,strerror
可以将错误号Map到告诉失败原因的字符串。你也可以使用
perror
命令测试错误代码和Linux终端gz5pxeao4#
zbdgwd5y5#
下面是删除文件另一种简单方法