InStr in C++

Hallo,

Ich habe ein Programm, dem ein String übergeben wird.
dieser muß nach bestimmten Zeichen durchsucht werden und dann an diesen Stellen zerlegt werden.
Gibt es da eine Funtkion (sowas wie InStr in VB)?
Oder muß ich es selbst schreiben (und wenn ja, wie??)?

bis dann,
Jan

Servus Jan,

hierfür gibt es die Funktion strtok. Damit kannst du einen String nach definierbaren Characters zerteilen und die Teilstring inspizieren.

Beispiel:

#include 
#include 

char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char \*token;

void main( void ) {
 printf( "%s\n\nTokens:\n", string );

 /\* Establish string and get the first token: \*/
 token = strtok( string, seps );

 while( token != NULL ) {
 /\* While there are tokens in "string" \*/
 printf( " %s\n", token );
 /\* Get next token: \*/
 token = strtok( NULL, seps ); 
 }
}

Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Dirk,
Erst mal Danke, dass habe ich gesucht.
Ein kleines Problem habe ich aber noch.

Mein String ist ein char *args

und bei strtok(args, seperator) gibts eine Fehler-Meldung, die ich nicht verstehe, die aber mit den Typen zusammenhängen muss.
In deinem Beispiel ist es ja ein Array…

Wie kriege ich also meinen String ins Array??

bis dann,
Jan

Hi,

Ich habe ein Programm, dem ein String übergeben wird.
dieser muß nach bestimmten Zeichen durchsucht werden und dann
an diesen Stellen zerlegt werden.
Gibt es da eine Funtkion (sowas wie InStr in VB)?
Oder muß ich es selbst schreiben (und wenn ja, wie??)?

Fuer C hadt Du ja schon eine Antwort bekommen. In C++ gibt es fuer Stringverarbeitung die Klasse string, die verschiedene Funktionen bietet, mit denen Du das Problem loesen kannst. Ich empfehle, den ganzen C-Kram zu vergessen, um sich auf C++ zu konzentrieren. Eine Dokumentation der C+±Standardklasse string (sowie aller weiteen Klassen der STL) findet sich hier: http://www.dinkumware.com/htm_cpl/index.html

Wenn Du mit der Doku Probleme hast, es aber trotzdem lieber mal mit der string-Klasse versuchen willst, frag nochmal.

Gruss

Thorsten

Servus Jan,

strtok kann leider nur einzelne Charecter auffinden. Wenn du einen String als Trennzeichen hast, wird es hiermit nicht mehr funktionieren.

Wenn du einen ganzen String suchst, solltest du es mit

char \*strstr( const char \*string, const char \*strCharSet );

versuchen.

Dabei ist

string: der zu durchsuchende String
strCharSet: die Zeichenfolge, die gesucht werden soll

Als Rückgabe erhältst du einen Pointer auf das erste Zeichen des gesuchten Strings. Wenn der String nicht enthalten ist, erhältst du NULL als Ergebnis.

Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Mein Fehler…
Hallo Dirk,

Hat sich erledigt, war mein Fehler.

Ab und zu sollte man sich auch mal den zweiten Parameter ansehen.
;-]

Jan