尝试在 C++ 中使用 boost 正则表达式匹配从字符串转换为 int 时出错

Posted

技术标签:

【中文标题】尝试在 C++ 中使用 boost 正则表达式匹配从字符串转换为 int 时出错【英文标题】:Error trying to convert from string to int using boost regex match in c++ 【发布时间】:2015-05-20 14:42:39 【问题描述】:

我正在尝试使用 regex/boost 将匹配的字符串转换为 int。 我用这个C++ to convert Boost Regex match result to other format 作为参考。但是,当我尝试时,我得到了 expected primary-expression before ‘int’Symbol 'lexical_cast' could not be resolved 错误。

这是我的代码:

#include <iostream>
#include <string>
#include <boost/regex.hpp>

using namespace std;
using namespace boost;


int main()
    string a = "123";
    boost::regex e("123");
    boost::smatch match;

    if (boost::regex_search(a, match, e))
        
            int number = boost::lexical_cast<int>(match[0]);
            cout << number << endl;
         
    return 0;

为什么会出现这些错误?

【问题讨论】:

【参考方案1】:

你忘记了这一行:

#include <boost/lexical_cast.hpp>

【讨论】:

哇。谢谢。我知道这很愚蠢。如果我想转换为双精度/浮点数,我只需将 &lt;int&gt; 更改为 &lt;double&gt;&lt;float&gt; 对吗? 是的,就可以了。定义了operator&gt;&gt;(std::ostream&amp;, TYPE&amp;) 的任何类型都应该可以工作。

以上是关于尝试在 C++ 中使用 boost 正则表达式匹配从字符串转换为 int 时出错的主要内容,如果未能解决你的问题,请参考以下文章

c++正则表达式使用和汇总

在 C++ 中使用正则表达式查找 [/ 和 ] 之间的数字

使用 Boost 澄清逻辑 AND 和 OR 的正则表达式匹配

BOOST库c ++的问题

使用 boost 正则表达式库未解析的外部对象

与 boost 正则表达式库的递归匹配