从文件中提取特定数据

时间:2013-01-23 09:44:34

标签: c++ parsing include getline

我有一个文件(作为文本),我应该从中提取所有包含的文件名。 实施应该在C++ 我想做的是一行一行地读取文件行(getline) 检查行是否从#include开始 - 我该怎么做?(可能有前导空格) 然后提取文件名 - 在“”之间的字符串 - 我该怎么做? 感谢

1 个答案:

答案 0 :(得分:0)

首先,包含可以放在<>之间或""之间,因此您必须检查两者。

下一步 - 你尝试做的最好方法是使用正则表达式。如果您使用c++11,他们将成为标准的一部分,您应该很高兴。如果不是这种情况,可以尝试boost::regex

如果使用正则表达式不是一个选项,你将不得不实现自己的解析,但这很容易出错,很可能你会错过一些怪异的边缘情况。如果必须的话,我会逐行遍历文件来实现这样的解析。我会检查该行是否包含#include作为子字符串并验证它之前是否只有空格。如果 行具有提到的子字符串,我将迭代该行的剩余部分,以便在<>""之间解析该部分。