You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:39:01