根据关键字拆分一行(拼写错误)

时间:2015-11-10 08:09:31

标签: c++ parsing

我有一个输入文本文件,其中包含3个人的信息(年龄,姓名,工作,工资......)。现在这些关键字可能拼写错误。我必须解析这三行,并且稍后可以将它们与模板进行比较。

我的问题仅在于如何处理这个问题。我开始将每一行解析为vector<string>,但我不知道如何查看向量的每个元素并读取不同的信息,即使它们包含拼写错误。

非常感谢任何帮助!

Name: Kevin, Jeb: Accountant, Yers of Experience: 5, Salery: 10000
Name: Susan, Job: Restaurant Owner, Years of Experience: 5, Salary: 14000

旁注:每行中的信息不必按此顺序排列,每行可以按随机顺序显示。

1 个答案:

答案 0 :(得分:1)

由于您需要结果,而不是进程,因此最简单的方法是最简单的方法。你在说那个

  

错别字可以有两种类型:删除(即Titl而不是Title)和替换(即体验而不是经验)。

我假设每个拼写错误类型(双关语)只能在每个单词出现一次(否则任务没有意义)。所以这是你的路线:

Name: Susan, Job: Restaurant Owner, Years of Experience: 5, Salary: 14000

用逗号分隔之后,你将获得4个部分:

Name: Susan
Job: Restaurant Owner
Years of Experience: 5
Salary: 14000

现在,每个部分都有一个“键”和一个“值”,通过“:”拆分它们也很容易。这些值有两种基本类型:薪水和年份或经验的整数,以及姓名和工作的字符串。

将具有整数的值作为值。在他们之间,很容易分辨多年的经验和薪水,因为“多年的经验”即使是错别字也比“工资”长得多。

现在使用字符串值。这个更难,因为你不能使用密钥的长度来区分密钥。但是,“名称”和“作业”字样不共享任何字符。因此,如果一个键包含“Name”一词中至少两个字符,那么它就是“Name”键,反之亦然。