提问人:Diego 提问时间:8/11/2023 更新时间:8/12/2023 访问量:72
在 c++ 中读取文件时如何解决问题 [已关闭]
How to solve problem when reading from a file in c++ [closed]
问:
我正在尝试从 .txt 文件中读取信息,但发生了一些非常奇怪的事情。
代码如下:
ifstream fichier(dir);
fichier.open(dir);
if (fichier.is_open())
cout << "file is opened";
double a;
fichier >> a;
我可以在屏幕上看到“文件已打开”这句话,但没有将任何内容分配给“a”。 文件不是空的,我已经验证过了。
答:
3赞
Remy Lebeau
8/12/2023
#1
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);
评论