gpt4 book ai didi

c++ - 如何在 C++ 中同时写入和读取 `fstream` 的文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:16 25 4
gpt4 key购买 nike

我正在尝试将一些文本写入文件,然后仅使用 1 个 fstream 对象读取它。

我的问题与this question 非常相似除了读/写的顺序。他试图先阅读然后写作,而我试图先写作然后阅读。他的代码能读不能写,而我的代码能写不能读。

我试过了 the solution从他的问题,但它只适用于读写而不适用于写读。

这是我的代码:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
fstream fileObj("file.txt", ios::out|ios::in|ios::app);

// write
fileObj << "some text" << endl;

// read
string line;
while (getline(fileObj, line))
cout << line << endl;
}

代码写为some textfile.txt成功但它不从文件输出任何文本。但是,如果我不向文件写入文本(删除 fileObj << "some text" << endl; ),代码将输出文件的所有文本。如何先写入再读取文件?

最佳答案

这是因为你的文件流对象在写操作之后已经到了文件末尾。当您使用 getline(fileObj, line) 读取一行时,您位于文件末尾,因此您不会读取任何内容。

在开始读取文件之前,您可以使用 fileObj.seekg(0, ios::beg) 将文件流对象移动到文件的开头,您的读取操作将正常进行.

int main()
{
fstream fileObj("file.txt", ios::out | ios::in | ios::app);

// write
fileObj << "some text" << endl;

// Move stream object to beginning of the file
fileObj.seekg(0, ios::beg);

// read
string line;
while (getline(fileObj, line))
cout << line << endl;

}

虽然这个答案不符合您“同时读取和写入文件”的要求,但请记住,文件很可能在写入时被锁定。

关于c++ - 如何在 C++ 中同时写入和读取 `fstream` 的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com