C ++的函数正则表达式在linux(CentOS)中但在OSX中遇到错误[重复]
Posted
技术标签:
【中文标题】C ++的函数正则表达式在linux(CentOS)中但在OSX中遇到错误[重复]【英文标题】:function regex of C++ meet error in linux(CentOS) but in OSX [duplicate] 【发布时间】:2016-03-04 10:14:01 【问题描述】:我尝试编写一个程序来测试 C++ 中的正则表达式,所以我阅读并遵循标准示例,我的代码如下:
#include <stdio.h>
#include <regex>
#include <string>
using namespace std;
char var1[10] = "12345";
string var2 = "12345";
int main()
if (regex_match( var1, regex( "\\d+" ) ) )
printf("var1 match\n");
else
printf("var1 not match\n");
if (regex_match( var2, regex( "\\d+" ) ) )
printf("var2 match\n");
else
printf("var2 not match\n");
然后我运行如下命令进行编译和运行:
g++ retest.cpp -o retest -std=c++0x
./retest
但它显示以下错误:
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
Aborted
我修改了代码,最后发现错误导致regex()中出现常规字符串。但是当我在我的 OSX 中编写相同的代码时,它可以运行并向我显示正确的结果! 我很困惑,为什么我使用标准 C++ 库,但 CentOS 和 OSX 的结果不同? 我怎么解决这个问题?谢谢!
【问题讨论】:
查看Is gcc 4.8 or earlier buggy about regular expressions 我该如何解决这个问题? > 升级到最新的 GCC 版本。 【参考方案1】:CentOS 有相当旧的 GCC 组件。您可以在http://distrowatch.com/table.php?distribution=centos查看详细信息
在我的 CentOS 7 机器上说,
# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
并且,<regex>
在 gcc 4.9.0 中实现。 https://***.com/a/12665408/3627572
【讨论】:
我的 CentOS7 是“gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC)”,所以看来我必须升级我的 gcc 和 g++,但之后没有任何反应我输入“yum upgrade gcc gcc-c++” 我很困惑为什么 gcc 显示 'std::regex_error' 但此版本不支持正则表达式以上是关于C ++的函数正则表达式在linux(CentOS)中但在OSX中遇到错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章
神级程序员教你如何在C语言中巧用正则表达式,简化处理,提高效率
在 linux 上,使用 C/C++ 编程时,我应该使用啥函数来输入密码? [复制]