Vergleichen von "stringketten"
-
Hallo zusammen,
ich habe das nächste problemchen.
ich habe 2 stringketten die folgendermassen aussehen könnten:
string1 = "hund katze maus"
string2 = "hugo1 HUGO2 hans peter katze maus"
jetzt muss ich schauen ob die einzelnen begriffe aus string1 im string2 sind.
WIE MACHE ICH DAS
<- NEWBEE ON BOARD
Gruß
Navigato alias greenhorn
-
In C? Schau mal nach man: strstr(3)
In C++? Schau mal nach std::string::find
-
bash, sh, csh, tcsh? Dann siehe man: grep(1), man: awk(1)
-
supertux schrieb:
bash, sh, csh, tcsh? Dann siehe man: grep(1), man: awk(1)
leider kann ich auf diese dincht zurückgreifen weil das ganze in c bzw. c++ gemacht werden muss
-
hallo,
ich habe dir diesen code gebastelt.ich hoffe dass das genau was du willst#include <string.h> #include <stdio.h> char string1[] = "hund katze maus"; char string2[] = "hugo1 HUGO2 hans peter katze maus"; char *token[100]; char *token_string1_2[100]; int i=0; int k=0; char * result; void main() { printf( "string1:%s\n\nTokens in string1:\n", string1 ); /* Establish string and get the first token: */ token[i] = strtok( string1, " "); while( token[i] != NULL ) { /* While there are tokens in "string" */ //printf( " %s\n", token[i] ); i++; /* Get next token: */ token[i] = strtok( NULL, " " ); } // zum demonstration for(int j=0;j<i;j++) { printf( " %s\n", token[j] ); } // auflisten der tokens aus string1 die sich widerum in string2 befinden printf("\n\nstring2:%s\n\n",string2); printf("tokens in string 1 und string 2:\n\n"); for(j=0;j<i;j++) { result = strstr(string2,token[j]); if(result != NULL) // token existiert in string2 { token_string1_2[k] = token[j]; printf("%s\n", token_string1_2[k]); k++; } } }
-
ich habe folgenden code:
char procs_name[]= {telnet}; std::string real_procs; real_procs=(system("ps -e > /dev/null")); if( (strstr(real_procs.c_str(), procs_name)) != NULL) { cout << "der Prozess: " << procs_name << "ist vorhanden" << endl; } else if( (strstr(real_procs.c_str(), procs_name)) == NULL ) { cout << "der Prozess: " << procs_name << " ist nicht vorhanden" << endl; }
obwohl der telnet prozess vorhanden ist bekomme ich die augabe, dass dieser prozess nicht vorhanden ist. wo ist der fehler im code???
-
Hm, entscheide Dich doch mal für C oder C++ und dann lern eine der beiden Sprachen vernünftig.
char procs_name[]= {telnet}; kann gar nicht kompilieren, wie wäre es einfach mit sowas?
const char procs_name[] = "telnet";
oder in C++:
const std::string procs_name = "telnet";
Und das hier bringt dir überhaupt nichts, so funktioniert system einfach nicht.
real_procs=(system("ps -e > /dev/null"));
-
nman schrieb:
Hm, entscheide Dich doch mal für C oder C++ und dann lern eine der beiden Sprachen vernünftig.
danke profi!!
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Linux/Unix in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das ist doch kein Grund sich gleich angepißt zu fühlen. Dein Code ist irgendeine Mischung aus C und C++. Und Du kannst Dir das Leben vermutlich deutlich leichter machen, wenn Du Dich für eines davon entscheidest.
In C++ haste ne string-Klasse, die das was Du willst fast schon kann. std::string::find tut nahezu das was Du willst.
Alternativ könntest Du auch ein std::set<string> bauen und da die möglichen Begriffe reinpacken. Dann kannst Du auch leicht abfragen. Das zerlegen des Eingabestrings kannste mit nem std::stringstream machen, oder mit irgendeinem StringTokenzizer (z.B. dem von boost).MfG Jester