Wort suchen...
-
Hoi,
Ich habe eine Frage wie man z.B mit C++ ein wort in einer .txt datei suchen kann...
z.B
test soll gesucht werden aber auch in ganzen wörter wie "testit"
if ( *** == test)
da findet man ja test... gibt es ne function (möglichkeit) auch wörter zu finden wo test mit drin ist ?Habe schon meine gesammten bücher durchschaut aber nicht gefunden !
-
vorschlag: (denke nicht das das sehr gut ist )
char für char den buffer duchgehen und auf 't' prüfen und hochzahlen und dann auf 'e' prüfen und hochzählen usw. falls ein anderer buchstabe kommt counter wieder zurücksetzen.
-
falls du brutale speed haben magst, nimm memory mapping und
#ifndef VHLIB_TEXTSEARCH_H #define VHLIB_TEXTSEARCH_H #pragma once // Verfahren aus einer c't übernommen class TextSearch { private: int shift[256]; int look_at; char *pattern; int patternlen; char *end; char *pos; char *find(char *text); public: TextSearch(char *p,int m); ~TextSearch(); char *findFirst(char *text,int size); char *findNext(); }; #endif #include "TextSearch.h" #include <string.h> TextSearch::TextSearch(char *p,int m) { patternlen=m; pattern=new char[m]; memcpy(pattern,p,m); int i; for(i=0;i<256;++i) shift[i]=m+1; for(i=0;i<m;i++) shift[(unsigned char)pattern[i]]=m-i; look_at=0; while(look_at<m-1) { if(p[m-1]==p[m-(look_at+2)]) break; ++look_at; }; }; TextSearch::~TextSearch() { delete[] pattern; }; char *TextSearch::findFirst(char *text,int size) { end=text+size; return pos=find(text); }; char *TextSearch::findNext() { return pos=find(pos+1); }; char *TextSearch::find(char *text) { int i; char *t=text; for(;;) { i=patternlen-1; if(t+i>=end) return 0; while(t[i]!=pattern[i]) { t+=shift[(unsigned char)t[patternlen]]; if(t+i>=end) return 0; } --i; while(t[i]==pattern[i]) { if(--i<0) return t; } t+=look_at+shift[(unsigned char)t[patternlen+look_at]]; } }
durchschnittliche lösungen hab ich leider nicht.
-
jetzt ist nur die Frage wo man diese textsearch.h erbekommt, wenn man Windows XP Benutzer ist?
Ich nehme mal an in Linux ist es integriert?
-
Maks schrieb:
jetzt ist nur die Frage wo man diese textsearch.h erbekommt, wenn man Windows XP Benutzer ist?
Ich nehme mal an in Linux ist es integriert?textsearch.h ist von volkard und diese findest du ein post über deinem
-
Entweder ich kapier die Frage nicht oder so geht es am einfachsten:
// Testdatei Zeile für Zeile einlesen... string str = "abcdefghi"; string::size_type pos = str.find (def,0); if (pos != string::npos) { cout << "juchu, gefunden" << endl; }