我正在尝试使用ifstream解析以文本文件形式呈现的表格,并评估/操作每个条目。但是,由于特定项目的省略,我很难确定如何处理这个问题。请考虑以下表格:
NEW VER ID NAME
1 2a 4 "ITEM ONE" (2001)
1 7 "2 ITEM" (2002) {OCT}
1.1 10 "SOME ITEM 3" (2003)
1 12 "DIFFERENT ITEM 4" (2004)
1 a4 16 "ITEM5" (2005) {DEC}
如您所见,有时“NEW”列中没有任何内容。 我想要做的是记录ID、名称、年份(在括号中),并注意其后是否有大括号。
当我开始做这个任务时,我寻找了“split”函数,但我意识到由于前面提到的缺失项和标题被分离,这会变得更加复杂。
我能想到的一件事是逐字阅读每一行,跟踪我看到的最新数字。一旦我遇到引号,就需要注意到我看到的最新数字是一个ID(如果我使用类似于“split”的东西,则是引号之前的数组位置),然后记录下直到下一个引号的所有内容(标题),最后开始查找其他信息的括号和大括号。然而,这似乎非常原始,我正在寻找更好的方法来解决这个问题。
我这样做是为了磨练我的C++技能并处理更大的现有数据集,因此我希望尽可能使用C ++,但如果另一种语言(我正在看Perl或Python)可以轻松完成这项任务,我可以学习如何将不同的语言与C++进行接口。我现在只是在筛选数据,这些数据最终会成为C++中的对象,因此我仍然有机会提高我的C++技能。
编辑:我也意识到只使用正则表达式就可以完成此任务,但如果可能的话,我想尝试使用不同的文件/字符串操作方法。