【问题标题】:Why could file not be opened using ifstream?为什么使用 ifstream 打不开文件?
【发布时间】:2022-01-13 19:24:11
【问题描述】:

我正在尝试创建一个简单的终端程序来生成随机的日语 Gojuōn。我有一个名为“source”的源文件,它看起来像这样:

A I U E O 
Ka Ki Ku Ke Ko 
...
あ い う え お 
か き く け こ 
...

现在,我正在尝试将每一行内容读入一个字符串变量,并将其打印到屏幕上,但我无法打开该文件。这是我的代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    ifstream source ("source");
    string line;
    if (source.is_open())
    {
        while (getline(source, line))
        {
            cout << line << "\n";
        }
        source.close();
    }
    else cout << "Unable to open file!\n";
}

当我在终端上运行代码时,我得到“无法打开文件!”。该代码与源文件位于同一目录中。

【问题讨论】:

  • 文件应该和exe在同一个文件夹中,除非它们相同,否则不是源。
  • @JohnnyMopp ...假设您在运行它之前cd 进入包含该exe 的目录。
  • @0x5453 是的,无论当前目录是 exe 文件。
  • 需要在当前目录下,可以和源目录无关,也可以和exe目录无关。或者(可能更好)是使用文件的完全限定路径,因此无论当前目录是什么,它都可以工作。
  • 这能回答你的问题吗? How to get error message when ifstream open fails

标签: c++ file-handling iostream


【解决方案1】:

您是从 IDE 内部运行的吗?这在使用 IDE 时很常见。

从 IDE 运行时的当前工作目录可能不是您想象的那样。尝试将文件的路径更改为绝对路径,以便您知道它正在找到它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多