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

如何在C++中读取文本文件中的文件名并打开对应文件

解决方案

你的现有代码已经能成功读取mytextfile.txt里的每一行(也就是各个目标文件的名称),接下来只需要在读取到每个文件名后,创建新的文件流对象去打开并读取对应文件即可。

修改后的完整代码

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

int main(){
    string filename;
    // 打开存储文件名列表的文件
    fstream listFile("mytextfile.txt");

    if (listFile.is_open())
    {
        // 逐行读取每个文件名
        while (getline(listFile, filename))
        {
            cout << "正在读取文件: " << filename << endl;
            // 创建新的文件流打开当前文件名对应的文件
            fstream targetFile(filename);
            if (targetFile.is_open())
            {
                string contentLine;
                // 读取目标文件的每一行内容
                while (getline(targetFile, contentLine))
                {
                    cout << contentLine << endl;
                }
                targetFile.close();
            }
            else
            {
                cout << "无法打开文件: " << filename << endl;
            }
            cout << "-------------------------" << endl;
        }
        listFile.close();
    }
    else
    {
        cout << "无法打开文件列表: mytextfile.txt" << endl;
    }

    return 0;
}

关键修改说明

  • 嵌套文件流处理:在读取到每个文件名后,初始化新的fstream对象targetFile,用当前读取的filename作为参数打开对应文件。
  • 增强错误处理:对每个目标文件的打开结果做校验,避免因文件不存在、路径错误或权限问题导致程序异常。
  • 保留原文件列表读取逻辑,仅在循环内部扩展了目标文件的读取操作。

注意事项

  • 确保文件名路径正确:如果目标文件和程序不在同一目录下,需要填写完整路径(例如./subdir/citylocation.txt或D:/docs/cloudcover.txt)。
  • 可按需调整输出逻辑:比如将目标文件内容写入新文件,而非直接打印到控制台。

内容的提问来源于stack exchange,提问作者black unicorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:20:37