Wie kann ich eine Zeichenfolge durch ein Trennzeichen in ein Array aufteilen?

8

Ich bin neu im Programmieren. Ich habe versucht, eine Funktion in C ++ zu schreiben, die den Inhalt einer Zeichenfolge in einem Zeichenfolgenarray bei einem bestimmten Parameter explodiert, Beispiel:

%Vor%

sollte String-Array zurückgeben:

%Vor%

Ich kann den String gut in Token zerlegen, aber der schwierigste Teil für mich ist, wie kann ich die Anzahl der Elemente in stringArray angeben, bevor ich ihm den aktuellen String toke zuweise und wie ich stringArray von der Funktion zurückgebe.

Würde jemand mir zeigen, wie man die Funktion schreibt?

Edit1: Ich brauche die Ergebnisse nicht unbedingt in einem String-Array, nur einen Container, den ich als reguläre Variable mit einer Art Indizierung bezeichnen kann.

    
Babiker 20.05.2009, 20:48
quelle

12 Antworten

10

Hier ist mein erster Versuch mit Vektoren und Strings:

%Vor%

Hoffentlich gibt Ihnen das eine Idee, wie Sie das anstellen können. In Ihrer Beispielzeichenfolge werden die korrekten Ergebnisse mit diesem Testcode zurückgegeben:

%Vor%     
Eric Scrivner 20.05.2009, 21:00
quelle
8

Verwendung von STL (leider kein Compiler nicht getestet)

%Vor%

// oder definieren Sie ein Token

%Vor%     
Martin York 20.05.2009 22:09
quelle
2

Es funktioniert für mich:

%Vor%

Quelle: Ссылка

    
Ouadie 26.11.2012 00:50
quelle
1

Sie können einen Vektor der Zeichenkette (std::vector<std::string> verwenden, jedes Token mit push_back daran anhängen und dann von Ihrer Tokenize-Funktion zurückgeben.

    
Jem 20.05.2009 20:52
quelle
1

Verwenden Sie std :: vector als dynamisches Array und geben Sie das als Ergebnis zurück.

    
workmad3 20.05.2009 20:52
quelle
1

Vielleicht sollten Sie eine Liste anstelle eines Arrays verwenden. Auf diese Weise müssten Sie nicht die Anzahl der Elemente im Voraus wissen. Sie können auch die Verwendung der STL-Container in Betracht ziehen.

    
user79755 20.05.2009 20:53
quelle
1

Wenn Sie darauf bestehen, stringArray zu einem Array zu machen, das einem std::vector<> entgegengesetzt ist (was das Richtige wäre), müssen Sie entweder:

  1. Machen Sie zwei Durchgänge (einen zu zählen, Sie sehen)
  2. Implementieren Sie selbst ein dynamisches Array.

Die Verwendung eines Vektors ist einfacher vector::push_back() fügt neues Material an das Ende an. Also:

%Vor%

Schließlich nicht benötigt Zur Vollständigkeit gelassen.

Um das String-Array zurückzugeben, verwenden Sie char ** .

Wie in

%Vor%

BTW-- Wie weiß die aufrufende Funktion, wie viele Elemente im zurückgegebenen Array sind? Das musst du auch lösen. Verwenden Sie std::vector<> , es sei denn, Sie sind durch äußere Kräfte eingeschränkt ...

    
dmckee 20.05.2009 20:51
quelle
0

Warten Sie bis Ihre Datenstrukturen Klasse und dann codieren Sie es mit einer verknüpften Liste. Wenn es für die Hausaufgaben ist, können Sie vielleicht damit davonkommen, das Array einfach nur sehr groß zu machen.

    
JasonRShaver 20.05.2009 22:11
quelle
0

Der folgende Code:

%Vor%

Ausgaben

%Vor%     
Paulo Lellis 15.02.2012 14:00
quelle
0

Hier ist mein Code gekocht (abgeschlossen). Vielleicht ist es nützlich für einige mit der gleichen Notwendigkeit.

%Vor%

Prost !!

    
Vivek 21.11.2013 10:17
quelle
0

Ich denke, dass ich eine viel einfachere Lösung geschrieben habe.

%Vor%

}

    
InusualZ 02.10.2015 19:01
quelle
0

Das hat für mich funktioniert:

%Vor%

Quelle: Ссылка

    
Mukesh Chapagain 27.04.2017 08:15
quelle

Tags und Links