【问题标题】:How do I open all txt files from a folder? [duplicate]如何打开文件夹中的所有txt文件? [复制]
【发布时间】:2017-10-27 18:12:06
【问题描述】:

我正在尝试打开与我的 main.cpp 相同的文件夹中的所有文本文件。我该怎么做?

file.open(".txt");

我尝试这样做,我尝试使用 *,尝试使用模,但都不起作用。感谢您的帮助,谢谢。

其他问题是询问如何获取文件列表。我在问如何打开它们。我不想列出它们。

【问题讨论】:

  • 我很好奇如果 file 可以同时打开同一个流的多个文件,你会如何表现它。
  • 什么是file
  • 提示:你首先要找出所有文件的名称,然后一个一个地打开。
  • 弄清楚目录中的内容是一个棘手的问题(至少在filesystem 上线之前)。您的目标是什么操作系统?
  • 还阅读了“工作目录”。你的程序并不总是从你认为的地方运行。

标签: c++


【解决方案1】:

我不认为这样的事情在 cpp 中是可能的。每个文件对象都打开一个具有指定路径的文件。如果你想打开文件夹中的所有文件,我建议你列出目录中的文件并迭代打开所有需要的文件。

std::filesystem::directory_iterator(path) 返回一个迭代器,您可以使用它来选择相应的文件然后打开它们

【讨论】:

  • 一旦我有了文本文件列表,例如,我将如何获取第一个文件的名称来读取它?
  • 是的。您将遍历所有文件,然后按照上面提到的使用file.open() 读取它们
【解决方案2】:

没有用于列出目录中的文件或将它们与 C++ 中的 glob 进行匹配的标准接口。

您必须依赖特定于平台的 API 来实现这一点。要弄清楚哪个系统,您必须首先弄清楚您正在为哪个系统编程。


即将推出的 C++17 标准将有一个用于列出目录中文件的 API,并且它已经作为可选 TS 存在。然而,没有通配功能。作为替代方案,可以使用正则表达式实现通配符匹配。

【讨论】:

  • 能否给我一个使用新 C++17 标准的教程链接?
  • @belgarion 我没有遇到过。不过,如果有些存在,我不会感到惊讶。
猜你喜欢
  • 1970-01-01
  • 2016-12-24
  • 1970-01-01
  • 2018-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
相关资源
最近更新 更多