2016-11-26 92 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小時。