Problem mit einer Zeichenkette
-
Ich habe folgendes Problem.
Ich habe ZB.eine Variable angelegtchar wert;
Ich will jetzt unter der Variablen "wert" ZB.30 verschiedene Werte
speichern.
Wie kann ich das machen ohne ZB. 30 mal die Variable "wert" , "wert1" usw. anzulegen?
Ist es egal welche Länge die Zeichenkette hat.Die Eingabe soll ZB.so aussehen "45673-12"
Und kann man die Variable in der main Funktion
deklarieren,
und in einer anderen Funktion einlesen.
Das muß man dann doch irgendwie mit Pointern machen , oder?Wäre echt dankbar für Hilfe.
-
Nimm dafür einen vector.
vector<string> wert(30);
dann kannst Du wie bei Arrays auf Wert zugreifen:
wert[0] = "bla"
...
wert[29] = "bla"mfg
Evil-HunterPS: Ich hoffe das stimmt so, wie ichs erzähl
-
Es muss vorher aber vorher im Code noch folgende Zeile ergänzt werden:
#include <vector>
Der Vorteil gegenüber einem Array ist, dass z. B. Elemente einfach eingefügt werden können:
wert.push_back("Ende"); // Ans Ende... wert.insert(wert.begin()+2, "Mittendrin"); // An die 2. Stelle packen, alles danach wird verschoben...
-
für viel mittendrin einfügen nimmt man aber ne liste.
-
Ich muß aber Arrays verwenden.
Kann man in char überhaupt so eine Zeichenkette wie ZB. "12435-12" speichern.Und es sollen ZB 30 verschiedene Zahlen sein.
-
Ich muß aber Arrays verwenden.
Kann man in char überhaupt so eine Zeichenkette wie ZB. "12435-12" speichern.Und es sollen ZB 30 verschiedene Zahlen sein.
-
So müsste es gehen:
#include <iostream> using namespace std; int main() { int AnzahlStrings = 30; char **wert = new char*[AnzahlStrings]; // Reserviere Speicher für 30 *chars... for(int i=0; i<AnzahlStrings; i++) { wert[i] = new char[20]; // ...mit max. 20 Zeichen... } wert[0]="Dies"; wert[1]="ist"; wert[2]="ein"; //... wert[29]="Test"; for(int i=0; i<AnzahlStrings; i++) { delete[] wert[i]; // ... Speicher wieder freigeben, auf den die 30 Zeiger zeigen.. } delete[] wert; // ... Array freigeben }
Allerdings gibts in C++ auch ein String-Klasse. Wenn du die verwenden darfst, wirds noch ein Tacken einfacher:
string *wert = new string[20]; // Platz für 20 StringObjekte... ... delete[] string; // ...müssen aber auch irgendwann wieder gelöscht werden...