使用正则表达式解析数字

我的问题或多或少是不言自明的,我想编写一个正则表达式来解析用户通过控制台输入的字符串中的数字。我使用以下命令获取用户输入:

getline(std::cin,stringName); //1 2 3 4 5

我假设用户输入N个数字,后跟空格(最后一个数字除外)。 我已经通过像这样通过char分析字符串char解决了这个问题:

std::string helper = "";
        std::for_each(stringName.cbegin(), strinName.cend(), [&](char c)
            {

                if (c == ' ')
                {
                   intVector.push_back(std::stoi(helper.c_str())); 
                    helper = "";
                }
                else
                    helper += c;
            });
        intVector.push_back(std::stoi(helper.c_str()));

我想通过使用正则表达式来实现相同的行为。我编写了以下代码:

std::regex rx1("([0-9]+ )");
        std::sregex_iterator begin(stringName.begin(), stringName.end(), rx1);
        std::sregex_iterator end;
        while (begin != end) 
        {
            std::smatch sm = *begin;
            int number = std::stoi(sm.str(1));
            std::cout << number << " ";

        }

这个正则表达式出现问题时,它到达最后一个数字,因为它后面没有空格,因此会进入无限循环。有人可以给我一个解决方法的想法吗?

评论