gpt4 book ai didi

c++ - 使用 for_each 和 istream_iterator 遍历 C++ 中的文本文件以查找文件名

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:48 24 4
gpt4 key购买 nike

从事 C++ 硬件项目。我们获得了将目录中的所有 .dat 文件读取到单个 .txt 文件的代码,然后我们需要从中提取值,没有特定的顺序。我们得到的代码是:

#if defined(_WIN32)
#define listcmd "dir \b *.dat > datfiles.txt 2>nul"
#endif

这给了我一个文本文件,其中包含比 .dat 文件名更多的信息,尽管...卷信息、目录路径、文件数据等。

然后我们执行以下操作来读取文件,但我不明白这是如何工作的:

system(listcmd);
ifstream datfiles("datfiles.txt");
for_each(istream_iterator<string>(datfiles), istream_iterator<string>(), analyze);
datfiles.close();

我一直在查看 cplusplus.com 上的 istream_iterator 和 for_each 页面,但需要一些说明。这个 for_each 语句到底在做什么?

我认为它正在执行以下操作是否正确:

  • 一次从 istream 中读取一个字符串(停在空白处)
  • 将该字符串传递给分析函数(以执行任何处理...在我的案例中尝试打开文件并读取值)
  • 一旦控制返回,继续执行此操作直到到达文件末尾或流失败

最佳答案

经过一个周末的挫折和疯狂的追逐,答案很简单,我应该在下一节中使用“/b”而不是“\b”:

#if defined(_WIN32)
#define listcmd "dir \b *.dat > datfiles.txt 2>nul"
#endif

更新后,文本文件会正确创建,其中包含非常整洁的 .dat 文件列表,每行一个。

关于c++ - 使用 for_each 和 istream_iterator 遍历 C++ 中的文本文件以查找文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com