我正在尝试从 .txt 文件读取信息,但发生了非常奇怪的事情。
这是代码:
ifstream fichier(dir);
fichier.open(dir);
if (fichier.is_open())
cout << "file is opened";
double a;
fichier >> a;
我可以在屏幕上看到“文件已打开”这句话,但没有为“a”分配任何内容。 文件不为空,我已经验证过。
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);