tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von rockbaer
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
10960
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kOa_DrohhyN_ kOa_DrohhyN_ ist offline Grünschnabel
    Registriert seit
    Apr 2005
    Beiträge
    1
    Hallo !

    Ich bin neu im Bereich C++, kann aber schon PHP und hab deshalb keine Probleme mit Programmierung an sich.
    Benutze als Editor Proton und als Compiler g++ unter cygwin (Linux emulator).

    Jetzt habe ich folgendes Problem: ich möchte einen string von der Tastatur einlesen und ihn dann anhand einer bestimmten Zeilenfolge trennen - die verschiedenen Abschnitte sollen danach in einen vector, also etwa so:

    string txt;
    txt = "Ein Text*-*zweiter Textteil ist länger*-*letzter Teil";

    Jetzt soll txt anhand der Zeichenfolge *-* in 3 Teile geteilt werden und dann in vector<string> teile(3) "eingelesen" werden, wobei der erste Teil natürlich den Index 0 haben soll usw. Am besten wird die Anzahl der im vector enthaltenen Elemente auch gleich ausgelesen, also vorkommen des Trennzeichens+1.
    In PHP könnte ich das einfach mit "explode" machen, hab in C++ aber leider nichts ähnliches gefunden...

    Danke im Voraus für Hilfe !
     

  2. #2
    Registriert seit
    Apr 2002
    Ort
    Delmenhorst (Niedersachsen)
    Beiträge
    3.567
    moin


    Habe mal ein bischen rumprobiert:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    string text="Trenn1*-*uns2*-*Trenn3*-*uns4";
    string teile[4];
     
    int anfang[20];
    int ende[20];
    int l=0;
     
    anfang[0]=0;
     
    for(int i=0; i<text.length(); i++)
    {
        if( text[i] == '*' &&
            text[i+1] == '-' &&
            text[i+2] == '*')
        {
            ende[l]=i;
            anfang[++l]=i+3;
     
            teile[l-1] = text.substr(anfang[l-1], ende[l-1] - anfang[l-1]);
        }
    }
    teile[l] = text.substr(anfang[l], ende[l] - anfang[l]);


    mfg
    umbrasaxum
     

  3. #3
    thooomy thooomy ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    111
    wenn du keine strings sondern char-arrays verwendest,
    kannst du dir auch mal die Funktion sscanf() näher ansehen.
    Die kann das auch, is aber - wie ich auch festellen musste - etwas mit vorsicht zu geniessen.
     

  4. #4
    Avatar von rockbaer
    rockbaer rockbaer ist offline Mitglied Silber
    Registriert seit
    Jun 2003
    Beiträge
    94
    oder so :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    void split(string& text, string& separators, vector<string>& words)
    {
        int n = text.length();
        int start, stop;
     
        start = text.find_first_not_of(separators);
        while ((start >= 0) && (start < n)) 
        {
            stop = text.find_first_of(separators, start);
            if ((stop < 0) || (stop > n)) stop = n;
            words.push_back(text.substr(start, stop - start));
            start = text.find_first_not_of(separators, stop+1);
        }
    }
    SirTales bedankt sich. 

Ähnliche Themen

  1. Shell, Zeichenkette anhand 2 delimiter trennen
    Von mr_g666 im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 18.01.11, 17:58
  2. String trennen
    Von p4l im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.07.10, 17:06
  3. Antworten: 8
    Letzter Beitrag: 29.05.10, 02:07
  4. String trennen
    Von lordfritte im Forum PHP
    Antworten: 19
    Letzter Beitrag: 30.03.06, 10:44
  5. String trennen
    Von moistwanted im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 28.02.06, 09:33