为什么fstream无法打开文件?

时间:2019-03-29 16:39:02

标签: c++ xcode macos io fstream

我尝试使用下面的代码打开文件。但是,它不起作用。我正在macOS Mojave 10.14上使用Xcode 10.1。

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    // "..." is meant to hide irrelevant information of the absolute file path.
    string filename = "Macintosh HD/Users/.../input.txt";
    ifstream inFile(filename);
    cout << inFile.is_open() << endl;
}

代码显示0。我是C ++的新手。任何人都可以告诉我我的代码有什么问题吗?谢谢!

2 个答案:

答案 0 :(得分:1)

根据许多建议,文件路径不正确,并且代码正确。错误是我从右键单击文件的Get Info选项复制了绝对文件路径。非常奇怪-文件路径字符串在外观上似乎正确,但事实并非如此。不知道为什么。对于谁在乎,请使用Copy (filename) as Pathname选项进行复制。

答案 1 :(得分:0)

我发现这不太可能是您文件的正确路径。摆脱“ Macintosh HD”部分,它可能会起作用。

在您发表评论后,我这样做了

$ g++ Foo.cpp -o Foo
$ Foo
1
$ cat Foo.cpp
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string filename = "/Users/jpl/foo.cpp";
    ifstream inFile(filename);
    cout << inFile.is_open() << endl;
}

文件名中确实没有...,对吗?

我还删除了整个路径(文件名=“ foo.cpp”;),它也显示了1。

您是通过IDE还是命令行来运行它?您的文件确实在您认为的位置吗?IDE是否使用您认为它真正使用的路径运行该程序?