0

这是我将输入写入文本文件的代码

ofstream fout("C:\\det.txt",ios::app);
fout << input << endl;
fout.close();

这个程序正在运行,但是当我输入多个输入时,它的输出是这样的

Output

four
three
two

在上面的输出中,二是我的最后一个条目,四是我的第一个条目,但我希望它以相反的顺序出现,最新的输入应该首先出现

Required output

two // latest entry
three // 2nd latest entry
four // 3rd entry
4

2 回答 2

1

将文件的内容放入向量中,反转向量并将字符串重新插入文件中。

std::fstream file("C:\\det.txt", std::ios_base::in);

std::vector<std::string> lines;
std::string line;

while (std::getline(file, line))
{
    if (!line.empty())
        lines.push_back(line);
}

file.close();
file.open("C:\\det.txt", std::ios_base::trunc | std::ios_base::out);

std::copy(lines.rbegin(), lines.rend(), std::ostream_iterator<std::string>(file, "\n"));
于 2013-11-10T17:21:57.050 回答
0

如果您不需要在输入输入后立即更新文件,则需要一个缓冲区将输入存储在某处(std::vector<std::string>也许),然后以相反的顺序将其写入文件。

您也可以每次都读取整个文件并重写它,fout << input << endl << readContent;但这不是一个好方法,因为每次输入时修改整个文件都会很慢。

于 2013-11-10T13:05:17.427 回答