我正在尝试在文本文件中写几行。我想在每次运行之前将文件追加为空。我能够清除以前的内容,但是由于某种原因,我只能清除输入文件的最后一行附加到输出文件。我还尝试使用remove()擦除文件并收到相同的输出。
另一方面,在不清除文件或将其删除的情况下,所有内容都会正确地附加到输出文件中。
我很乐意找到解决此问题的方法,也许理解为什么会发生这种情况。我正在使用C ++ 11。
我看过这里:How to clear a file in append mode in C++
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <stdio.h>
int main() {
std::fstream infile;
std::string line;
infile.open("file.txt" , std::ios::in);
while (std::getline(infile, line)) {
std::istringstream line_buffer(line);
std::string word;
std::fstream outfile;
outfile.open("out.txt", std::ios::out);
outfile.close();
outfile.open("out.txt", std::ios::app);
while (line_buffer >> word) {
std::cout << word << " ";
outfile << word << " ";
}
std::cout << std::endl;
outfile << std::endl;
}
return 0;
}
答案 0 :(得分:2)
问题在于,您需要在while循环的每次迭代中清除文件,您可以像这样在循环之前打开outfile:
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
#include <stdio.h>
int main() {
std::fstream infile;
std::string line;
infile.open("file.txt" , std::ios::in);
std::fstream outfile;
outfile.open("out.txt", std::ios::out);
while (std::getline(infile, line)) {
std::istringstream line_buffer(line);
std::string word;
while (line_buffer >> word) {
std::cout << word << " ";
outfile << word << " ";
}
std::cout << std::endl;
outfile << std::endl;
}
outfile.close();
return 0;
}