2016-04-25 16 views
1

regex_search nicht "ter" in "Computer Computer" ist passend, wenn ich folgenden Code bin mit -regex_search C++ nicht passende Substrings

#include <iostream> 
#include <regex> 

using namespace std; 

int main() { 
    string str("Computer Computer"); 
    cout << regex_search(str, regex("ter")); 
    return 0; 
} 

Der obige Code gibt mir 0, während es offensichtlich ist "ter" in das Thema. Also, was ist hier los? Ich weiß, PHP Regex stimmt mit dem Teilstring ganz gut, aber was ist hier falsch?

Ich benutze C++ 11 GCC, ist das ein Problem, da ich irgendwo gelesen habe, hat es eine schlechte Unterstützung für Regex.

+0

Welche Header-Datei verwenden Sie? –

+0

Ich habe Ihren genauen Code in meinen CodeBlocks verwendet und er gibt mir 0, was bedeutet, dass es hier ein Compiler-Problem gibt. –

+0

Sind Sie sicher, dass Ihr Compiler auf gcc-11 eingestellt ist. Der Link, den ich gab, war für C++ 14. Ich bekomme auch 0 – rock321987

Antwort

1

Es wiederholt 1 Typ bool, es bedeutet, dass die Übereinstimmung des Musters im Wort gefunden wird. Führen Sie dieses Programm aus.

#include <stdio.h> 
#include<iostream> 
#include <regex> 
using namespace std; 
int main(void) { 
    cout << regex_search(string("Computer Computer"), regex("ter"));//1 
    cout << regex_search(string("Computer Computer"), regex("tesdsr"));//0 
    return 0; 
} 
+0

Schließen, aber keine Zigarre, immer noch 00. :( –

+0

@DivyaMamgai dieses Programm ist korrekt, aber wenn Sie den GCC-Compiler mit Version 4.8 oder früher haben, dann [seine Standardbibliothek bietet keine funktionierende '' Implementierung] (http : //stackoverflow.com/q/12530406/819272) Upgrade auf gcc 4.9 oder höher – TemplateRex

+0

Ja, habe gerade Cygwin mit GCC 5.3 installiert und alles funktioniert super. –