strtok - wörter oder zeichen?

shrewm

Mitglied
Hallo, ich würde gerne einen String an einer bestimmten Stellen brechen und die verschiedenen Stringschnipsel jeweils in einer eigenen Variable speichern. Hab damit jetzt so angefangen, aber für variable[0] und variable[1] bekomme ich jeweils ein Zeichen aus dem String, also passiert eben genau das selbe, als würde ich einzelne Zeichen in einem String abrufen.

Code:
string bearbeitung;
char aufteilen[255];
char *variablen;
strcpy(aufteilen,bearbeitung.c_str());
variablen = strtok(aufteilen,":");
cout << variablen[0];
cout << variablen[1];

Wenn zb für String test1:test2 eingegeben würde, sollte ich doch 2 variablen bekommen. Eine mit dem Inhalt test1 und eine mit Inhalt test2.
 
Hast du auch eine Frage ? ;)

strtok() ist dazu da, innnerhalb einer Schleife aufgerufen zu werden. Es liefert nacheinander Pointer auf den Beginn des nächsten Tokens.
Code:
#include <string.h>
#include <stdio.h>

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 );
   }
}
Output

A string   of ,,tokens
and some  more tokens
 
Oh, stimmt hab die Frage vergessen - sorry bin noch müde ;)
Gibt es noch ne andere Möglichkeit String zu teilen ggf. ohne Schleifen?
 
Schleifen sind immer irgendwie beteiligt. Man kann sie aber aus dem eigenen Code heraushalten, in dem man das in einer Funktion wegkapselt. Die kann mansich auch selber bauen. Praktisch ist die .Net-Klasse string, weil sie schon eine entsprechende Split()-Methode besitzt. Das kann man auch selber bauen. Oder man verwendet den string_tokenizer von boost (http://www.boost.org).
 
Hm ok, aber irgendwie komm ich trotzdem nicht weiter. Ich mag einfach nur, dass wenn man einen String eingibt, er in verschiedene Teile geteilt wird, die in Variablen gespeichert werden. Bei dir ist es ja eine "Wörterkette" als char. Funktioniert aber nicht mit Varaiablen vom Typen string oder irre ich mich da? Bin gerade ein wenig verwirrt :confused:

Edit: Doch jetzt hab ichs :) War nen doofer Fehler von mir - Danke dir
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück