【发布时间】:2014-04-30 11:19:21
【问题描述】:
从事 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 一次读取一个字符串(在空白处停止)
- 将该字符串传递给分析函数(以执行任何处理...尝试在我的情况下打开文件并读取值)
- 一旦控制返回,继续执行此操作直到到达文件末尾或流失败
【问题讨论】:
标签: c++ string algorithm istream-iterator