我试图在我从文件输入的字符串中找到年份

时间:2017-04-05 01:29:49

标签: c++ string file-io

因此,我正在进行的任务的一部分是我必须弄清楚居民是否已经足够退休了。我正在从文件中获取字符串,现在我只需要找到年份。问题是,我不知道如何解决这个问题。

这是迄今为止的代码

:0

这是一个示例字符串

Matthew Alan Aberegg 1963 452,627

我在想我需要使用find函数来查找带有空格,四个字符,然后是另一个空格的字符串。但是后来Aland会被发现。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

使用<regex>(C ++ 11)。模式

\\b([0-9]{4})\\b

将匹配任何四位数字。如果您只是寻找最近一年,则以下模式仅匹配19,2和2千

\\b(19|20)([0-9]{2})\\b

Demo

#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";
}