如何在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
相关产品推荐
相关产品推荐

