Strings zerlegen. Wie?
-
- Beiträge: 22
- Registriert: 13.04.2013, 22:16
- Benutzertext: Noch am Anfang. :)
- Echter Name: Matthias Nowottnick
Strings zerlegen. Wie?
Guten Abend.
Ich hätte eine Frage zu den Strings.
Undzwar wüsste ich gerne wie ich Strings in einzelne teile Teile "zerschneide".
Ich möchte als Parameter meiner Funktion einen String übergeben und diesen für ein "Dropdownmenü" benutzen also z.B.:
"Neu, bearbeiten, löschen" in Neu, Bearbeiten und löschen unterteilen also 3 Buttons somit eine Art variabler Parameter.
Ich hoffe ich habe mein Problem gut genug geschildert und hoffe auf baldige Hilfe.
Ich hätte eine Frage zu den Strings.
Undzwar wüsste ich gerne wie ich Strings in einzelne teile Teile "zerschneide".
Ich möchte als Parameter meiner Funktion einen String übergeben und diesen für ein "Dropdownmenü" benutzen also z.B.:
"Neu, bearbeiten, löschen" in Neu, Bearbeiten und löschen unterteilen also 3 Buttons somit eine Art variabler Parameter.
Ich hoffe ich habe mein Problem gut genug geschildert und hoffe auf baldige Hilfe.
Re: Strings zerlegen. Wie?
Welche Programmiersprache benutzt du? Benutzt du irgend eine Art von eigener Stringklasse oder eine Standardimplementierung? Was verwendest du als GUI library? Hat dein GUI library eine eigene Stringklasse?
Blog: http://3d.benjamin-thaut.de Tolle mobile engine: http://www.projectanarchy.com
-
- Beiträge: 22
- Registriert: 13.04.2013, 22:16
- Benutzertext: Noch am Anfang. :)
- Echter Name: Matthias Nowottnick
Re: Strings zerlegen. Wie?
Achso ja ich benutze C++ und demnach hab ich die Stringklasse.^^
Re: Strings zerlegen. Wie?
Ja welche? std::string oder QTString? Marke Eigenbau? Ein bisschen mehr informationen bitte. Speichert deine String-Klasse die länge des strings, oder muss er nullterminiert sein, oder beides?
Blog: http://3d.benjamin-thaut.de Tolle mobile engine: http://www.projectanarchy.com
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Strings zerlegen. Wie?
Übergib doch einfach ein Array aus Strings an die Funktion, also die Menüpunkte bereits einzeln.
std::string vorausgesetzt, könntest Du ansonsten eine kleine while-Schleife aufmachen, mit std::string::find() jeweils das nächste Trennzeichen suchen und mittels std::string::substr() den Teil bis dahin extrahieren.
std::string vorausgesetzt, könntest Du ansonsten eine kleine while-Schleife aufmachen, mit std::string::find() jeweils das nächste Trennzeichen suchen und mittels std::string::substr() den Teil bis dahin extrahieren.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
-
- Beiträge: 22
- Registriert: 13.04.2013, 22:16
- Benutzertext: Noch am Anfang. :)
- Echter Name: Matthias Nowottnick
Re: Strings zerlegen. Wie?
Ok also ich benutze std::string und die Methode mit substr klingt gut das guck ich mir mal an.
Re: Strings zerlegen. Wie?
In JS und Verwandten gibt es die Methode String.split(delimiter:String):Array für genau diesen Zweck - vielleicht findest du ja eine C++-Implementierung unter diesem Stichwort.
- Schrompf
- Moderator
- Beiträge: 5047
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: Strings zerlegen. Wie?
Für alte C-Stil-Zeichenketten gibt es strtok(). Aber schön ist das nicht. Aufgrund der Art der Fragestellung vermute ich, dass Ma_No noch nicht so sattelfest in allen C/C++-Details ist, und alte C-Strings würden dieses Detail-Wissen ziemlich belasten.
Dann schon besser string::find() in einer while-Schleife.
Dann schon besser string::find() in einer while-Schleife.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Re: Strings zerlegen. Wie?
Hier ein kleiner Vorschlag:
Nachtrag: tokens.push_back(token); in tokens.push_back(std::move(token)); geändert, da token lokal nicht mehr genutzt wird und der Besitzerwechsel wohl effizienter sein sollte als eine Kopie.
Code: Alles auswählen
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
std::vector<std::string> split(std::string const &str, char delimiter)
{
std::istringstream ss(str);
std::vector<std::string> tokens;
while (ss.good())
{
std::string token;
std::getline(ss, token, delimiter);
tokens.push_back(std::move(token));
}
return tokens;
}
int main(int argc, char *argv[])
{
auto tokens = split("foo,bar,blubb,moo", ',');
for (auto const &t : tokens)
std::cout << t << std::endl;
return 0;
}
Zuletzt geändert von mnemonix am 07.06.2013, 16:16, insgesamt 2-mal geändert.
Re: Strings zerlegen. Wie?
Schöner ist es so:mnemonix hat geschrieben:Hier ein kleiner Vorschlag:
Code: Alles auswählen
#include <iostream> #include <string> #include <sstream> #include <vector> std::vector<std::string> split(std::string const &str, char delimiter) { std::istringstream ss(str); std::vector<std::string> tokens; while (ss.good()) { std::string token; std::getline(ss, token, delimiter); tokens.push_back(token); } return tokens; } int main(int argc, char *argv[]) { auto tokens = split("foo,bar,blubb,moo", ','); for (auto const &t : tokens) std::cout << t << std::endl; return 0; }
Code: Alles auswählen
while (std::getline(ss, token, delimiter))
tokens.push_back(token);
- dot
- Establishment
- Beiträge: 1745
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: Strings zerlegen. Wie?
thisSchrompf hat geschrieben:Übergib doch einfach ein Array aus Strings an die Funktion [...]
Re: Strings zerlegen. Wie?
Falls du boost nutzt gibt es dort in boost::algorithm eine Split() Methode.