我有一个文件(作为文本),我应该从中提取所有包含的文件名。
实施应该在C++
我想做的是一行一行地读取文件行(getline
)
检查行是否从#include
开始 - 我该怎么做?(可能有前导空格)
然后提取文件名 - 在“”之间的字符串 - 我该怎么做?
感谢
答案 0 :(得分:0)
首先,包含可以放在<>
之间或""
之间,因此您必须检查两者。
下一步 - 你尝试做的最好方法是使用正则表达式。如果您使用c++11
,他们将成为标准的一部分,您应该很高兴。如果不是这种情况,可以尝试boost::regex。
如果使用正则表达式不是一个选项,你将不得不实现自己的解析,但这很容易出错,很可能你会错过一些怪异的边缘情况。如果必须的话,我会逐行遍历文件来实现这样的解析。我会检查该行是否包含#include
作为子字符串并验证它之前是否只有空格。如果 行具有提到的子字符串,我将迭代该行的剩余部分,以便在<>
或""
之间解析该部分。