ifstream.open 在输入文件名时失败

ifstream.open fails when inputting file name

提问人:Sheridan Lugo 提问时间:11/16/2022 更新时间:11/16/2022 访问量:186

问:

我正在用 c++ 编写一个程序,允许用户输入他们想要打开的文件的名称。但是,每当程序尝试打开该文件时,即使用户输入了现有文件名,并且该文件与程序位于同一目录中,文件打开也会失败。为什么会发生这种情况,我该如何解决这个问题?我使用的是 MacOS,用 Visual Studio Code 编写这个程序,并使用 Xcode 的命令行工具进行编译。我尝试打开的文件是一个 .txt 文件。关于其他背景知识,我是我的第一堂编程课,这是我第一次使用 I/O 流。

#include <iostream>
#include <fstream> 
#include <string> 
using namespace std; 
int main(){
    ifstream inStream; 
    ofstream outstream; 

    string filename1; 

    //accepting user input of file name 
    cout << "Enter the file name: ";
    cin >> filename1; 

    //** OPENING FILE ** 
    inStream.open(filename1); 
    //checking if open fails  
    if(inStream.fail())
    {
        cout << "Input file opening failed.\n";
        exit(1); 
    }
    return 0; 
}

我还尝试编写此代码,以便将文件的完整路径包含在 open 命令中,但这也不起作用。

C++ Fstream IOstream(英语:IOSTREAM)

评论

3赞 ChrisMM 11/16/2022
文件名有空格吗?
0赞 ChrisMM 11/16/2022
另外,尝试失败时。cerr << strerror(errno);
2赞 Tim Roberts 11/16/2022
你的代码对我来说很好用。
0赞 Retired Ninja 11/16/2022
请尝试改用。std::getline
0赞 drescherjm 11/16/2022
如果它没有缺少空格,您是否添加了文件扩展名?您在 Windows 中的文件管理器可能会隐藏扩展名,但您需要键入它才能成功打开。如果这是 Windows 以外的其他操作系统,则文件名的大小写可能与区分大小写的文件系统上的文件不同。最后,文件名必须是当前工作目录中文件的名称。如果不是,则必须指定该工作目录中的绝对路径或相对路径。 不会对您输入的文件名进行任何形式的搜索。readme.txtREADME.txtc++

答: 暂无答案