2012-05-03 48 views
0

當writeToFile函數被調用時,我想在文件中用字符串寫一個新行。這可能沒有清除前面的行或整個txt?上一行被清零

void writeToFile(string str) { 
    ofstream fileToWrite; 
    fileToWrite.open("C:/Users/Lucas/Documents/apps/resultado.txt"); 
    if(fileToWrite.good()) { 
     //write the new line without clearing the txt 
       //fileToWrite << str won't work for this reason 
    } 
    fileToWrite.close(); 
} 

回答

2

是。查看std::ios_base::atestd::ios_base::app

void write_to_file(std::string const &str) { 
    std::ofstream fileToWrite("C:/Users/Lucas/Documents/apps/resultado.txt", 
           std::ios_base::app); 
    fileToWrite << str << "\n"; 
} 

在這種情況下,兩者之間的區別是無關緊要的,但ios_base::ate意味着當您打開該文件,它的定位在年底,所以你寫的東西被添加到結束 - 但如果你想,您可以尋求文件的早期部分並覆蓋那裏的內容。使用ios_base::app,在你寫任何東西之前,它會自動尋找到最後,所以你所做的任何寫作都會追加到最後,而不是覆蓋任何現有的數據。