gpt4 book ai didi

c++ - 在 C++ 中解析相当复杂但结构化的文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:42 26 4
gpt4 key购买 nike

我正在尝试使用 C++ 解析一个相当复杂但结构化的文件。

011 FistName MiddleName LastName age(int) date(4/6/2001) position status ...
012 FistName MiddleName LastName age(int) date(4/6/2001) position status ...
...

这就是文件格式的样子。我正在尝试将数据存储为结构的单个字段,但第一个中间姓氏的大小可变,并且其中可能没有中间名,那么您如何区分它?

例如,

014 Jon Smith ...
015 Jon J Smith, Jr. ...

我想将整个名称存储在名称字段中而不是将它们分开。假设我们有

struct{
std::string name;
int id;
int age;
std::string position;
...

}

我将如何解析所有内容?

最佳答案

为了您的目的,如果您使用的是 C++11,您可以调整 std::regex match example完成你想要的。

如果不是,则应使用 boost::regex完成你想要的。

这是您可以使用的正则表达式示例:

^\d+ (\w+) ?(\w*) (\w+),? ?(\w+\.)? age\((\d+)\) date\((\d\/\d\/\d+)\) (\w+) (\w+)

要了解正则表达式的含义以及它如何匹配事物,请查看 this link .

要了解有关正则表达式的更多信息,我强烈推荐 this book作者:杰弗里·弗里德尔。

它将匹配以下内容:

014 Jon Smith age(32) date(4/6/2001) position status
014 Jon J Smith, Jr. age(16) date(4/6/2001) position status
015 FistName MiddleName LastName, Title. age(45) date(4/6/2001) position status
016 FistName MiddleName LastName age(7) date(4/6/2001) position status
039 FistName MiddleName LastName age(100) date(4/6/2001) position status

关于c++ - 在 C++ 中解析相当复杂但结构化的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14635904/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com