提问人:Christian Galdi 提问时间:9/19/2023 最后编辑:Christian Galdi 更新时间:9/19/2023 访问量:56
无法使用 fstream 打开文件
Not able to open file using fstream
问:
我想我可能没有在正确的位置读取我试图读取的文件,但我已将其放在 IDE 中的任何可能位置,但它仍然无法正常工作。我甚至把它放在我的程序的.exe旁边,但它仍然找不到它。
我希望该文件能够打开,以便我可以使用 c++ 代码读取其内容。
#include <iostream>
#include <fstream>
#include <cstdlib> // exit prototype
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
ifstream inFile;
string filename = "infile6";
// if a filename is provided, open file
cout << "Enter the name of a file to read from: " << endl;
//cin >> filename;
cout << "Name of a file requested: " << filename << endl;
inFile.open(filename.c_str());
if (!inFile)
{
cerr << endl;
cerr << "File cannot be opened" << " " << filename << endl;
exit(1);
}
return 0; // ifstream destructor closes file
} // end main
答:
使用 Visual Studio 创建的项目的默认位置为:
C:\Users\%USERNAME%\Documents\Visual Studio 2022\Projects
替换为您的版本
Visual Studio 2022
二进制文件位于该目录树的深处
最有可能 :
C:\Users\%USERNAME%\Documents\Visual Studio 2022\Projects\RA2\Debug\RA2.exe
或C:\Users\%USERNAME%\Documents\Visual Studio 2022\Projects\RA2\Debug\RA2.exe
RA2/
├── RA2.sln
├── RA2.vcxproj
├── RA2.vcxproj.filters
├── Debug/
│ └── RA2.exe
├── Source Files/
│ └── main.cpp
├── Header Files/
│ └── ...
├── Resource Files/
│ └── ...
└── ...
现在,您的程序期望文件位于同一位置
目录作为你的 executable()。infile6
C:\Users\%USERNAME%\Documents\Visual Studio 2022\Projects\RA2\Debug\
您可以将文件复制/粘贴到该目录中,也可以提供 .infile6
下面是假定用户名和 Visual Studio 版本的绝对路径
Bob
2022
string filename = "C:\\Users\\Bob\\Documents\\Visual Studio 2022\\Projects\\RA2\\Source Files\\infile6";
P.S 如果您使用 C++17,您应该利用 std::filesystem 来处理文件路径,它更干净、更安全、更现代。
评论
std::file_system::current_path()
inFile
std::string
std::ifstream inFile(filename)