如何知道libstdc++是否支持std::regex
How to know if libstdc++ support std::regex
我有一个使用std::regex的应用程序,它在我的计算机上构建并运行良好。然而,在ubuntu 14.04上,它构建了但不起作用,因为std::regex没有在旧的libstdc++上实现。
我想在代码中#ifdef一些行来解决这个问题,但似乎可以找到一种可靠的方法来确定libstdc++是否支持它。
我正在使用cmake,所以如果我能够获得该库的版本(/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19->6019),我也会很高兴。
您可以编写一个简单的测试来检查它是否有效。首先是CMake部分:
include(CMakePushCheckState)
include(CheckCXXSourceRuns)
cmake_push_check_state()
set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++11")
check_cxx_source_runs("
#include <regex>
int main() {
return std::regex_match("StackOverflow", std::regex("(stack)(.*)"));
}
" HAVE_CXX_11_REGEX)
cmake_pop_check_state()
然后,您必须将变量have_CX_11_REGEX包含在config.h中。然后,您可以使用#ifdef HAVE_CXX_11_REGEX
对此进行测试。
相关文章:
- C++ std::regex 使用前瞻失败
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 你能防止 std::regex 在无效表达式上抛出异常吗?
- 在VC2015U3上,std::regex比boost::regex慢得多
- 将std::regex设置为静态的好主意吗
- std::regex and dual ABI
- C++11 std::regex后备选项
- 包含在 std::regex 搜索中,使用 std::regex_token_iterator 从 std::sub_m
- std::string references、std::regex和boost::filesystem的基本概念
- std::regex 是否保证了最坏情况下的时间复杂度?
- boost::regex 和std::regex之间的不一致?
- 使用 std::regex 拆分一行并丢弃空元素
- std::string to std::regex
- 用std :: Regex通过DOT解析数字
- C++ [std::regex] 尝试仅匹配中间有空格的数字
- std::regex总是可以识别区域设置吗?
- 是STD :: REGEX构造函数安全
- STD :: Regex不确定的行为
- std::regex对于用户定义的表达式安全吗?
- std::regex来识别多项式方程的系数