2016-11-26 89 views
-2

原始的问题Mac和Linux机器之间的正则表达式的兼容性问题:“我制定了一个计划我的Mac上使用的Xcode 8的最新LLVM 8的编译器(铛8/3.8?),这使得大量使用正则表达式进行的C++ 14 。当时我无法得到我的代码给我在Linux上运行时,正确的输出,有似乎是,我不知道的一些正则表达式的兼容性问题。

我怎样才能解决这个问题?

+0

[gcc?](https://gcc.gnu.org/projects/cxx-status.html#cxx11) – kaylum

+0

如果您使用正则表达式调试问题,将它分享给我们会不会更容易在SO上(关于如何修复的答案),然后最终让代码在编译器和操作系统之间更加兼容?或者更直截了当地说,让我们修复代码中的错误,而不是更改工具集。这个问题很可能与编译器本身无关,而是代码(即bug)或运行时库。 – selbie

+0

所以,我恍然大悟:1)从STD为我的正则表达式使用更改命名空间::提高::(和文件#include )。这是固定的*大部分兼容性问题。后来我发现在我的代码中的错误,我被推进一个迭代器的矢量的可能为null的位置,然后试图访问它的内存。看到我最后的帖子在这里所有已修复! –

回答

0

换出std :: for boost :: like等

//using std::regex_replace; 
using boost::regex_replace; 
using boost::sregex_iterator; 
//using std::sregex_iterator; 
//using std::smatch; 
using boost::smatch; 
//using std::regex; 
using boost::regex; 

,并添加

#include <boost/regex.hpp> 

(我已经使用boost ::文件系统,所以大部分的头/已包含库/链接)。我想这不会立即显现,但应注意的是,这两个功能在提升更稳定的父母(至少在升压::文件系统的情况下,C++中的“实验性”的版本实际上只是提升)。

因此,它处理任何兼容性问题,因为我保证在我的Mac和Linux机器上遵循提升规范。

有这个答案就已经救了我5小时......也许现在它会为你节省5小时。