Visual Studio 2019下C++文件读取程序无法打开txt文件如何解决
问题解决方案
1. 代码错误修复
现有代码存在重复打开文件的逻辑问题:使用带文件名参数的ifstream构造函数时,已经自动执行了文件打开操作,后续再次调用open()会将流的错误标志位置位,直接导致打开失败。
修正后的代码如下:
#include <iostream> #include <string> #include <fstream> #include <iomanip> using namespace std; int main() { // 仅用构造函数打开,删除后续open调用即可 ifstream myFile("Otto.txt"); if (!myFile.is_open()) { cout << "Sorry, an error has occured"; // 打开失败直接退出,避免后续无效读操作执行 return 1; } string read; while (myFile >> read) { cout << read << endl; } myFile.close(); return 0; }
如果需要单独调用open(),把构造函数改成无参形式ifstream myFile;即可。
2. Visual Studio 2019 文件路径配置
VS2019默认运行程序的工作目录是项目配置文件(.vcxproj)所在的文件夹,和源代码文件、生成的exe文件路径都不相同,这是多次遇到同类问题的核心原因,按以下方法排查:
- 把
Otto.txt文件放到和.vcxproj同目录的文件夹下,重新运行程序即可读取 - 如果要放在其他位置,可填写绝对路径,Windows下路径的反斜杠需要转义,示例:
ifstream myFile("C:\\Users\\你的用户名\\Desktop\\Otto.txt"),也可以直接用正斜杠避免转义:ifstream myFile("C:/Users/你的用户名/Desktop/Otto.txt") - 如果需要自定义工作目录,可右键项目→属性→调试→修改「工作目录」配置项为你存放文件的文件夹路径即可。
3. 可选排查方法
如果按上述操作还是无法打开,可以添加代码打印当前程序的工作目录,确认路径是否匹配:
// 需添加头文件 #include <windows.h> char buf[256]; GetCurrentDirectoryA(256, buf); cout << "当前工作目录:" << buf << endl;
内容的提问来源于stack exchange,提问作者Lucy123
相关产品推荐
相关产品推荐

