如何解决c++中读取文件时的问题

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

我正在尝试从 .txt 文件读取信息,但发生了非常奇怪的事情。

这是代码:

ifstream fichier(dir);
fichier.open(dir);
     
if (fichier.is_open())
    cout << "file is opened";

double a;
fichier >> a;

我可以在屏幕上看到“文件已打开”这句话,但没有为“a”分配任何内容。 文件不为空,我已经验证过。

c++ fstream readfile ifstream
1个回答
0
投票

ifstream fichier(dir);

在此语句中,您将文件名传递给构造函数,因此它会立即打开文件。

fichier.open(dir);

然后,在此语句中,您将文件名传递给

open()
,因此它尝试再次打开同一个文件并失败,将流置于您未清除的错误状态。这就是为什么
fichier >> a
之后没有读到任何内容。

文件流不能同时打开两个文件句柄。如果它已经打开了一个文件,您需要

close()
才能使用它打开另一个文件。

最简单的解决方案是一开始就不要打开流两次。要么:

  • ifstream fichier(dir);
    更改为
    ifstream fichier;
//ifstream fichier(dir);
ifstream fichier;
fichier.open(dir);
  • fichier.open(dir);
     之后删除 
    ifstream fichier(dir);
ifstream fichier(dir);
//fichier.open(dir);
© www.soinside.com 2019 - 2024. All rights reserved.