1

私は最近、gcc 4.8 での正規表現サポートが不完全であり、gcc 4.9 で実際に実装されていることを知りました ( Is gcc 4.8 or older buggy about regular expressions?を参照してください)。

したがって、C++ プログラムで正規表現を使用したいので、この手順に従って gcc を 4.9 に更新しました ( https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4- 9-on-ubuntu-14-04 )。

今、プログラムをコンパイルしようとすると#include <regex>、コンパイラ フラグを指定する必要があると表示されますが-std=c++11、これを実行しましたが、以前にはなかった新しいコンパイルの問題に直面しています ( ‘constexpr’ needed for in-class initialization of static data member)。

それを考えると、今のところ gcc 4.8 に固執し、コンパイルで gnu++11 フラグを指定しないのが最善だと思います。正方形 1 に戻ります。

では、gcc 4.9 に切り替えたり、c++11 でコンパイラにフラグを立てたりしたくない場合、c++ で正規表現を使用できますか? 別の方法はありますか?

ありがとう!

PS: 実際には、gcc のバージョンではなく、コンパイルの問題を引き起こすのは c++11 フラグですよね?

4

2 に答える 2

2

PCREライブラリをインストールして、C++11 標準正規表現の代わりにそれを使用できます。PCRE は実際には C++ ではなく C ライブラリ/インターフェイスとして設計されていますが、いくつかの単純なラッパー クラスを作成したり、C ライブラリとして使用したりするのは非常に簡単です。

于 2016-01-23T18:32:37.870 に答える