我正在嘗試使用ofstream類將一些東西寫入文件,但所發生的只是文件被創建,然後什麼都沒有。我有一些簡單的代碼在這裏:爲什麼ofstream有時會創建文件但無法寫入文件?
#include <iostream>
#include <fstream>
#include <cstring>
#include <cerrno>
#include <time.h>
using namespace std;
int main(int argc, char* argv[])
{
ofstream file;
file.open("test.txt");
if (!file) {
cout << strerror(errno) << endl;
} else {
cout << "All is well!" << endl;
}
for (int i = 0; i < 10; i++) {
file << i << "\t" << time(NULL) << endl;
}
file.flush();
file.close();
return 0;
}
當我創建一個控制檯應用程序,一切工作正常,所以我怕這個代碼是不能完全代表。但是,我在一個更大的項目中使用這樣的代碼 - 說實話 - 我不完全理解(Neurostim)。我應該編寫一些編譯成可以由Neurostim加載的dll的類。
當代碼運行時,會創建「test.txt」,然後「沒有錯誤!」被打印出來,因爲這顯然是來自strerror的輸出。顯然這是錯誤的。該應用程序運行完美否則,並沒有分階段的事實,我試圖寫入一個損壞的流。它只是不這樣做。在我看來,權限沒有問題,因爲該文件實際上已經創建。
有沒有人有任何想法什麼樣的事情可能會導致這種奇怪的行爲? (我在WinXP Pro SP3上並使用Visual C++ 2008 Express Edition)
謝謝!
本質上,你發佈的代碼示例工作?老兄..請重複錯誤! – Jacob 2009-10-16 16:41:10
我可以發佈整個項目,但我想你們不想爲我編寫數千行代碼。代碼示例是爲了說明發生了什麼以及應該發生什麼。部分問題正是因爲我不知道是什麼導致了這個錯誤,我不知道如何重現它。這就是爲什麼我要求可能導致這種行爲的事情。 – Jordi 2009-10-16 17:55:58