除我皆佬丶 2022-04-17 19:43 采纳率: 100%
浏览 133
已结题

C++实现读取一个文件夹下所有文件内容(例如txt等),目前不明白怎么依次打开每个文件

问题遇到的现象和发生背景

img


如上,一个文件夹中有多个文件,想要依次打开每一个文件(不需要手动输入每个文件的文件名,输入一个文件夹的路径即可),并读取其中的内容

操作环境、软件版本等信息
尝试过的解决方法

自己尝试了一些代码

#include<io.h>
#include<iostream>
#include<fstream>
#include<vector>
#include<string.h>
#include<string>
using namespace std;

//int fileread(string dir,vector<string>filename)
//{
//
//}

int main()
{
    ifstream infile;
    ofstream outfile;
    int i = 0; //保存文件数量
    struct _finddata_t fileinfo;
    long fHandle;
    string fileName[80];
    //string dir;
    cout << "请输入文件路径" << endl;
    //cin >> dir;
    //vector<string>fileName;        //保存文件名
    if ((fHandle = _findfirst("E:\\multifile\\*.txt", &fileinfo)) == -1L)
    {
        cout << "当前目录下无文件" << endl;
        return 0;
    }
    else
    {
        do
        {
            fileName[i] = fileinfo.name;
            i++;
        } while (_findnext(fHandle, &fileinfo) == 0);
    }
    /*for (int j = 0; j < i; j++)
    {
        cout << fileName[j] << endl;
    }*/
    for (int j = 0; j < i; j++)
    {
        infile.open("E:\\multifile\\fileName[i]")
    }
    return 0;
}


在45行处怎么修改可以实现呢?因为在引号里面那个fileName[i]的话就会识别为字符串饿了

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    test.exe * 不一定支持中文路径

    
    #include <fstream>
    #include <iostream>
    
    int main(int argc, char *argv[])
    {
        std::ifstream test;
        char a;
        for (int i = 1; i != argc; ++i)
        {
            test.open(argv[i]);
            test >> a;
            std::cout << a << std::endl;
            test.close();
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 创建了问题 4月17日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装