String aufteilen

Post Reply
Message
Author
jensemann

String aufteilen

#1 Post by jensemann »

Hi Leute
Ich bin ziemlicher c++ Anfänger, vorher hab ich unteranderem in Perl programmiert. In perl hatte ich die funktion split um strings nach nem bestimmten Muster aufzuteilen, wie kann ich sowasin c++ machen. In meinem c++ Buch konnte ich darüber nirgends was finden. Gibt es da irgendeine Funktion in der stl oder irgendeine externe lib. Oder ist das einfacher als ich glaube und ich brauche gar keine externe lib?

Mfg jensemann

mvo

Re: String aufteilen

#2 Post by mvo »

Hallo,
den split Befehl kenne ich nicht, weiss also nicht genau, was Du machen willst. Aber schau mal in "string.h" rein, dort ist eine Vielzahl von Stringfunktionen definiert.

jensemann

Re: String aufteilen

#3 Post by jensemann »

Hi mvo
Die String funktionen kenne ich aus meinem Buch, da ist aber nichts passendes dabei, war zumindest nichts passendes im Buch beschrieben. Die split funktionen nimmt einen String entgegen, z.B. "Hallo Du" und splitet ihn dann nach nem vorgebenen Zeichen auf, und schreibt die teile in ein Array. Wenn ich bei obigem String das leerzeichen als trennung verwenden würde hätte ich ein Array, bei dem eintrag 0 Hallo ist, und eintrag 1 Du. Und sowas brauche ich jetzt am besten in c++, oder ich muss mir nen anderen Lösungsweg einfallen lassen, was ich nach mglichkeit vermeiden wollte.

Mfg jensemann

mvo

Re: String aufteilen

#4 Post by mvo »

strtok() kommt dem noch am naechsten, allerdings arbeitet die Funktion am Originalstring (dieser wird dabei "verbraucht"), und die Stringteile werden nicht automatisch in ein neues Array geschrieben. Das laesst sich aber einfach selber basteln. Dann gibt es da glaube ich noch die "GNU-Erweiterungen" mit komfortableren String-Funktionen, damit kenne ich mich aber nicht aus.


Quelle: C Programming Reference, Release 1.08

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
Library: string.h

Prototype: char * strtok(char *s, const char *delim);

Syntax: char string []="abc def ghi";
char * word;

word=strtok(string, " ");
word=strtok(NULL, " ");

strtok requires a string and the word delimiters, for example:

word = strtok(string, " ");
A A
| |
| ------- Delimiters.
|
-------------- String to break up.

After the first call to strtok, word will point to abc on the second call, word will point to def

Example:

/*****************************************************************
*
* Purpose: Program to demonstrate the 'strtok' function.
* Author: M J Leslie
* Date: 23-Apr-94
*
****************************************************************/

#include <stdio.h>
#include <string.h>

main()
{
/* Copy the constant into the memory
* pinted to by 'test_string' */
char test_string[50]="string to split up";

/* if 'test_string' is declared as below and the program will give a
* 'Segmentation fault' This is because test_string' is pointing
* to a constant i.e. somethin that cant be changed.

char *test_string="string to split up"; */

char *sub_string;

/* Extract first string */
printf("%s
", strtok(test_string, " "));

/* Extract remaining
* strings */
while ( (sub_string=strtok(NULL, " ")) != NULL)
{
printf("%s
", sub_string);
}
}
/*****************************************************************
*
* Program O/P will look like this...
*
* string
* to
* split
* up
*
*****************************************************************/
</font><hr></pre></blockquote>

jensemann

Re: String aufteilen

#5 Post by jensemann »

Hi mvo
Danke, werde ich nachher mal ausprobieren.

Post Reply