Teilstring-Suche Code
-
Hallo zusammen,
Ich möchte in einem String einen Teilstring (pattern) suchen (den man eingibt) und dann die Position (des ersten Buchstabens des gesuchten pattern) ausgeben.
Ich weiss nicht welche Funktion ich dazu gebrauchen soll. habs schon mit find_first, find und compare versucht.was mache ich falsch??
vielen dank für jede hilfe
stef#include<iostream>
#include<cstring>
using namespace std;int main() {
const int max_N = 100;
int N;
char text[max_N];
char pattern[max_N];cout << "Bitte geben Sie hier Ihren Text ein: ";
cin.getline(text,max_N);N = strlen(text);
cout << "Bitte geben Sie hier das gesuchte pattern ein: ";
cin >> pattern;int pos = text.find(pattern,0);
cout << pos << endl;cout << pattern << "gefunden an Stelle " << pos << endl;
system("pause");
return 0;
}
-
ich denke mal das problem is folgendes, du verwendest char-arrays und auf die kann man find nicht anwenden, denn find kommt von std::string::find...nimm also lieber std::string anstatt den char-array. fals ich falsch liege, korrigiert mich bitte
-
vielen Dank für die schnelle Antwort! Also du meinst ich muss nur die beiden Variablen text und pattern als string definieren? hab ich das richtig verstanden?
string text[max_N], pattern[max_N]
-
also bei strings brauchst du die größe explizit nicht anzugegeben, weil string dynamisch sind, d.h. da passt shcon eine menge rein...
kannst gleich so anfangen
#include<iostream> #include<string> using namespace std; int main() { int N; string text; string pattern; cout << "Bitte geben Sie hier Ihren Text ein: "; getline(cin,text); N = text.length(); cout << "Bitte geben Sie hier das gesuchte pattern ein: "; cin >> pattern; int pos = text.find(pattern,0); cout << pos << endl; cout << pattern << " gefunden an Stelle " << pos << endl; system("pause"); return 0; }
-
#include <iostream> #include <string> using namespace std; int main() { string text, pattern; cout << "Bitte geben Sie hier Ihren Text ein: "; getline(cin, text); cout << "Bitte geben Sie hier das gesuchte pattern ein: "; getline(cin, pattern); string::size_type pos = text.find(pattern, 0); if(pos != string::npos) cout << "\"" pattern << "\" gefunden an Stelle " << pos << endl; else cout << "\"" << pattern << "\" wurde nicht gefunden!" << endl; cin.clear(); cin.ignore(); cin.get(); return 0; }
-
ihr habt meinen morgen gerettet...
liebs grüessli aus der schweiz