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();
}
4

1 回答 1

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

于 2012-05-03T18:41:38.357 回答