删除不正常工作?(std命名空间)

sap*_*Pro 1 c++ visual-c++

通过此片段,我尝试从目录中删除某个文件.这是代码.

/* char* cpathToDeleteGND;  
   char* cpathToDeleteFST;
   char* cpathToDeleteSND;
 */

cout << "Enter the name to be removed : ";

cin.ignore();

getline( cin , fullName );

string pathToDeleteGND = "d:/HostelManager/studentDetails/groundFloor/" + fullName  + ".txt";

string pathToDeleteFST = "d:/HostelManager/studentDetails/firstFloor/" + fullName + ".txt";

string pathToDeleteSND = "d:/HostelManager/studentDetails/secondFloor/" + fullName + ".txt";


ifstream checkToDeleteGND( pathToDeleteGND );
ifstream checkToDeleteFST( pathToDeleteFST );
ifstream checkToDeleteSND( pathToDeleteSND );

cpathToDeleteGND = new char[ pathToDeleteGND.size() + 1 ];
cpathToDeleteFST = new char[ pathToDeleteFST.size() + 1 ];
cpathToDeleteSND = new char[ pathToDeleteSND.size() + 1 ];

strcpy( cpathToDeleteGND , pathToDeleteGND.c_str() );
strcpy( cpathToDeleteFST , pathToDeleteFST.c_str() );
strcpy( cpathToDeleteSND , pathToDeleteSND.c_str() );

if( checkToDeleteGND ) {
  if( remove( cpathToDeleteGND) == 0 ) {
   cout << "\nStudent details cleared successfully !";
  }
}  else if( checkToDeleteFST) {
    if( remove( cpathToDeleteFST) == 0 ) {
      cout << "\nStudent details cleared successfully ! ";
            }
   }  else if( checkToDeleteSND ) {
       if( remove( cpathToDeleteSND) == 0 ) {
    cout << "\nStudent details cleared successfully !";
       }
         } else {
        cout << "\nIt seems that either the student has already been removed or does not exist.";
     }
Run Code Online (Sandbox Code Playgroud)

我给出了应该从目录中删除的名称.虽然if else块工作,但删除功能不起作用.我无法理解原因..

例如,输出如下:

Enter the name to be removed : diana
Press any key to continue . . .
Run Code Online (Sandbox Code Playgroud)

该文件diana.txt存在,这就是为什么它没有执行最后一个else块.但是remove function不起作用.这是为什么 ?

Fre*_*Foo 5

文件diana.txt存在,这就是为什么它没有执行最后一个else块.但删除功能不起作用.这是为什么?

您不知道,因为只有remove成功才打印消息.尝试:

if (remove(pathToDeleteFST.c_str()) == 0) {
    // success, print something
} else {
    // failure, much more interesting
    cout << "Can't remove " << pathToDeleteFST << ": "
         << strerror(errno) << endl;
}
Run Code Online (Sandbox Code Playgroud)

errnoerrno.h,strerrorstring.h.

(而不是打开文件来检查它是否存在,你也可以提前充电并尝试remove它.正如@nm所说,在Windows上甚至可能是必要的.)