我在重命名文件时遇到问题。我正在尝试删除现有文件的几行,并将其替换为新文件。
string line;
ifstream myfile(filename);
ofstream outfile;
outfile.open(filename.append(".new"));
if(myfile.is_open()) {
//loop here that runs through code and calles
//outfile << line; repeatedly
}
int test = rename(filename.append(".new").c_str(),filename.c_str());
if (test == 0) cout << "Success";
else cout << "Failure";
从我在网上看到的情况来看,我希望这可以创建新文档,填充它,然后用更新的文档替换原文。
有谁看到我哪里出错?
答案 0 :(得分:4)
看起来它失败了,因为你仍然打开了这两个文件。您很可能无法在锁定文件时重命名该文件。在尝试重命名之前关闭该文件。
此外,您需要先删除原始文件,然后才能重命名。
在伪代码中,您需要这样做:
当errno
的调用失败时,您的C ++实现可能会设置rename
。因此,您应该检查errno
的值,以找出呼叫失败的原因。请熟悉错误报告机制,以便您自己诊断问题。