【问题标题】:How to use ifstream in C++如何在 C++ 中使用 ifstream
【发布时间】:2023-04-03 16:43:01
【问题描述】:

我正在尝试使用 ifstream 从我的计算机中读取和存储文件中的数据,但是在构建和编译之后,我的命令行界面没有显示我期望的输出。我的代码如下:

#include <iostream>
using namespace std;
int main ()
{
    int num1;

    ifstream file_In;
    file_In.open("YES");
    file_In >> num1;
    cout << num1 << endl;

    file_In.close();
    return 0;
}

我的桌面上有一个名为“YES”的文本文件,它只包含以下文本: 10 20 5 5 5 7

我希望在我的命令行界面上看到数字 10,但结果却是 0。

【问题讨论】:

  • 您总是需要检查您调用的函数的结果。要了解预期的结果,请阅读相关文档。
  • RTFM 浮现在脑海
  • 对不起,我对编码很陌生,我不太明白检查我调用的函数的结果意味着什么。
  • 给它完整路径或将文件放在与程序相同的目录中
  • 在 Windows 上,设置“隐藏已知文件类型的文件扩展名”是程序员最大的敌人。 Turn it off.

标签: c++ ifstream


【解决方案1】:

您很可能遇到了文件路径不正确的问题。我对你的程序做了一个小改动,它运行良好。所以尝试给出从驱动器名称开始的完整路径,例如"C:\nitin\progs\YES"。

main()
{
    int num1;

    ifstream file_In;
    file_In.open("C:\\nitin\\progs\\YES");
    file_In >> num1;
    cout << num1 << endl;
    file_In.close();
}

【讨论】:

  • 为什么不检查文件是否打开?为什么不检查是否能够读取整数?
  • ifstream::open 返回无效。为了检查文件打开错误,他需要检查是否引发了任何异常。因为他对编程很陌生,所以我给了他一个更简单的解决方案。
  • 请首先编写代码来检查它是否打开并因此具有容错性。即使用file_In.is_open()
  • @Nitin 我对编程不是很陌生。 :-) std::ifstream 不会抛出异常。它设置失败位。有必要检查 ifstream::operator >> (int) 是否也失败了。
  • @Nitin 谢谢!放入完整的文件路径解决了我的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
  • 2020-08-20
  • 2014-11-03
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多