C++如何逐个读取目录下的所有文件并输出文件内容
读取目录下所有文件文本内容的操作指导
原代码中
count变量未初始化就执行自增操作,会出现未定义行为,需要修改为int count = 0;;另外用完的目录流记得调用closedir()释放资源,避免资源泄漏。
你已经完成了文件名的收集,后续操作步骤如下:
- 引入文件操作所需头文件:在代码头部添加
#include <fstream> - 遍历存储文件名的数组,拼接完整文件路径,打开文件读取内容并打印
- 操作完成后释放动态申请的文件名数组内存
补充代码示例(放在你原有打印文件名的for循环之后即可)
// 遍历每个文件读取内容 for(int j=0;j<count;j++){ // 拼接完整文件路径 string file_path = "text files/" + arr[j]; // 创建文件输入流 ifstream in_file(file_path); // 判断文件是否打开成功 if(!in_file.is_open()){ cout << "无法打开文件:" << arr[j] << endl; continue; } cout << "\n===== " << arr[j] << " 的内容如下 =====" << endl; string line; // 逐行读取文件内容并打印 while(getline(in_file, line)){ cout << line << endl; } // 关闭文件流 in_file.close(); } // 释放动态申请的数组内存 delete[] arr; // 释放目录流资源 closedir(op); closedir(dir);
注意事项
- 如果目录下存在子文件夹,你可以在存入文件名数组前加判断,只处理普通文件:
if(contents->d_type == DT_REG)再存入数组,避免尝试打开文件夹读取内容报错 - 如果要处理中文路径,Windows环境下可能需要调整编码适配,Linux/macOS环境一般无需额外操作
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

