C++ 将文件重命名为已存在的文件名

C++ 将文件重命名为已存在的文件名,c++,C++,我正在将文件(例如file1.txt)重命名为newFile.txt,但是下次代码运行时。文件newFile.txt已经存在,因此新创建的名为file1.txt的文件不会重命名为newFile.txt 我想要的是,如果newFile.txt已经存在,重命名file1.txt应该覆盖file1.txt,有可能吗 这是我的密码 #include <fstream> #include <iostream> #include <string> using namesp

我正在将文件(例如file1.txt)重命名为newFile.txt,但是下次代码运行时。文件newFile.txt已经存在,因此新创建的名为file1.txt的文件不会重命名为newFile.txt 我想要的是,如果newFile.txt已经存在,重命名file1.txt应该覆盖file1.txt,有可能吗

这是我的密码

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
    char data[100];

    fstream outfile;
    outfile.open("afile.dat" , ios::out );

    cout << "Writing to the file" << endl;
    cout << "Enter your name: ";
    cin.getline(data, 100);

    outfile << data << endl;

    cout << "Enter your age: ";
    cin >> data;
    cin.ignore();

    // again write inputted data into the file.
    outfile << data << endl;

    cout << "Reading from the file" << endl;

    outfile >> data;
    cout << data << endl;

    outfile >> data;
    cout << data << endl;
    outfile.close();

   // this is how i am renaming
    std::rename("afile.dat" , "file2.txt");

    return 0;
}

您的代码可以工作并只重命名一次文件

第二次运行程序时,文件banana.txt已经存在于该目录中,函数std::renameafile.dat,banana.txt;返回一个错误代码


因此,您需要检查具有新文件名的文件是否已经存在,或者在函数std::rename之后处理错误。

it first?From:如果新文件名存在,行为是由实现定义的。好主意@SomeProgrammerDude请注意,如果您删除并重命名,则有可能在两次调用之间跳入某些内容并创建文件。如果您想以100%的成功率完成此操作,我认为您必须使用streams手动复制文件。。。但我敢打赌,在这种情况下,删除就可以了,jsut Fine我只是在练习文件系统,其他什么都没有,这不是什么项目,也不是什么@UKMonkey。。顺便说一句,我不明白会发生什么。。我的意思是,我们可以检查文件是否存在,然后删除它并将文件重命名为我们想要的文件名,不是吗???