2015-08-17 63 views
0

我一直在爲此奮鬥了很長一段時間,它可能是完全愚蠢的(通常情況下,當你看你的代碼太長時間^^),但我無法弄清楚。沒有寫在我的文件中

所以我有一堆,我希望寫入文件和下面的代碼:

outfileMatrix = new ofstream(path+to_string(trialI)+".csv"); 
outfileEvents = new ofstream(path+to_string(trialI)+"events.csv"); 
outfileMeta = new ofstream(path+to_string(trialI)+"meta.csv"); 
//... 
vector<string> v = getTimeHistory(); 
*outfileEvents << "Subject ID ; " << "TrialIndex ; " << "Timestamp ;" << "Action ID ; " << "Duration ;" << endl ; 
for(std::vector<string>::size_type i = 0; i!=v.size(); i++) { 
    cout << "Coucou" << endl ; 
    *outfileEvents << subjectID << " ; " << trialInd << " ; " << v.at(i); 
    cout << subjectID << " ; " << v.at(i) << endl ; 
} 
//... 
vector<string> w = getMatrixHistory(); 
for(std::vector<string>::size_type i = 0; i!=w.size(); i++) { 
    *outfileMatrix << subjectID << " ; " << trialInd << " ; " << w.at(i) << endl ; 
} 

輸出我得到的將是在標準輸出就好了(即COUT工作得很好),但我outfileEvents只包含我用作標題的第一行。在for循環中應該添加的所有內容都不是。現在我已經檢查了v的大小,它大於0,並且無論如何,cout將數據打印得很好,以便它通過for循環,這只是數據未添加到文件中。

我將非常感謝您能提供的幫助。

+0

你是否檢查過流['is_open()'](http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open)? – NathanOliver

+1

我沒有足夠的時間檢查,但你關閉了你的流? – zwlayer

+1

當你完成它們時,你是否「刪除」這些流?否則,數據可能永遠不會寫入文件。 –

回答

2

您既不刷新,關閉也不刪除流。所以不能保證實際寫入磁盤已經完成。