Fstream 无法正确读取 .txt 文件

问题描述 投票:0回答:1

我有一个文件可以打开(是的,它打开)该文件,但无法从中获取任何内容。

使用

ifstream
打开文件,因为我只需要这样读取文件:

string line;
ifstream text;
text.open("input.txt", ios::trunc | ios::in | ios::out | ios:: binary);

while 循环写成这样:

while (getline(text, line)) {

我怀疑这与

while
循环的条件有关,但我不知道问题所在

我有一段代码指示文件是否已打开:

if (text)
    {
        cout << "File can be opened" << endl;
        exit(1);
    }

并且它总是输出

File can be opened
,没有其他错误消息。

我应该怎么做才能解决这个问题?

该文件与源代码位于同一文件夹中。我尝试添加文件路径,但仍然不起作用。

c++ fstream
1个回答
0
投票

当您使用

std::ifstream
时,您会自动获得一个 input 文件。但是,如果您在输入文件上使用
std::ios::trunc
,则该文件在打开时会被 截断,这意味着文件的内容在您有机会读取之前已被删除。 (此处有开放模式标志的文档。)

一般来说,指定更改默认行为绝对需要的标志。对于 input 流,可以是:

  • std::ifstream f( filename )
    以文本模式打开文件,或者
  • std::ifstream f( filename, std::ios::binary )
    以二进制模式打开文件。

一如既往,定期参考文档。

© www.soinside.com 2019 - 2024. All rights reserved.