之前的行已在流上清除

时间:2012-05-03 18:37:01

标签: c++ ofstream

当调用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();
}

1 个答案:

答案 0 :(得分: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,在进行任何写入之前,它会自动搜索结束,因此您所做的任何写入都会附加到结尾,而不是覆盖任何现有数据。