[英]Why isn't my rename file working?
我在重命名文件時遇到麻煩。 我正在嘗試刪除現有文件的幾行,並將其替換為新文件。
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";
根據我在網上看到的內容,我希望這可以創建一個新文檔,填充它,然后用更新的文檔替換原始文檔。
有人看到我哪里出問題了嗎?
好像失敗了,因為您仍然打開了兩個文件。 您很可能在鎖定文件時無法重命名該文件。 嘗試重命名之前,請關閉文件。
此外,您需要先刪除原始文件,然后才能重命名。
在偽代碼中,這是您需要做的:
當rename
調用失敗時,您的C ++實現可能會設置errno
。 因此,您應該檢查errno
的值以找出調用失敗的原因。 一定要熟悉錯誤報告機制,以便自己診斷問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.