因此,我正在进行的任务的一部分是我必须弄清楚居民是否已经足够退休了。我正在从文件中获取字符串,现在我只需要找到年份。问题是,我不知道如何解决这个问题。
这是迄今为止的代码
:0
这是一个示例字符串
Matthew Alan Aberegg 1963 452,627
我在想我需要使用find函数来查找带有空格,四个字符,然后是另一个空格的字符串。但是后来Aland会被发现。
任何帮助将不胜感激!
答案 0 :(得分:1)
使用<regex>
(C ++ 11)。模式
\\b([0-9]{4})\\b
将匹配任何四位数字。如果您只是寻找最近一年,则以下模式仅匹配19,2和2千
\\b(19|20)([0-9]{2})\\b
#include <iostream>
#include <string>
#include <regex>
int find_year(std::string line, unsigned index = 0)
{
std::smatch match;
std::regex expr("\\b([0-9]{4})\\b"); // matches any four digit number
if ( std::regex_search(line,match,expr) )
return std::stoi(match[index]);
else
throw std::invalid_argument("No number matching a year found!");
}
int main()
{
int year = find_year("Matthew Alan Aberegg 1963 452,627");
std::cout << year << "\n";
}