2011-12-19 15 views
8

とregex_iteratorは私がグラム++ -c TEST.CPP -std = C++ 0xのとの.oファイルを作成することができますが、それをリンクカント、次のエラーだ:はSTDをコンパイル:: gccの

test.cpp:(.text+0xe5): undefined reference to `std::regex_iterator<char const*, char, std::regex_traits<char> >::regex_iterator(char const*, char const*, std::basic_regex<char, std::regex_traits<char> > const&, std::bitset<11u>)' 
test.cpp:(.text+0xf1): undefined reference to `std::regex_iterator<char const*, char, std::regex_traits<char> >::regex_iterator()' 

コードを:

#include <regex> 
#include <iostream> 

#include <string.h> 

typedef std::regex_iterator<const char *> Myiter; 
int main() 
{ 
    const char *pat = "axayaz"; 
    Myiter::regex_type rx("a"); 
    Myiter next(pat, pat + strlen(pat), rx); 
    Myiter end; 


    return (0); 
} 
+1

GCCのどのバージョンですか? ''は実際には4.6.2まで実装されていません。また、代わりに 'std :: cregex_iterator'を使用してみませんか? –

+0

@Kerrek SB、4.6.1 – Yola

+1

あなたはboost regexライブラリの使用を検討しましたか? boost :: regexとboost :: xpressiveは完全に機能しています。 – mark

答えて

13

The GNU C++ standard library supports <regex>が、not until version 4.9.0。 (ヘッダーは以前のバージョンでは使用できませんでしたが使用できませんでした)

他のコンパイラは、私が見る限り、これをサポートしていません。

古いGCCを使用する場合はdifferent libraryを使用できます。

+7

MSVCとClangの両方がをサポートしています。実際に正規表現は、GCCが他のコンパイラより遅れているC++ 11の唯一の部分です。 –

関連する問題