C++ - Zeilen in Vektor schreiben

Hi,
Ich habe gerade ein kleines Programm angefangen. Ein Teil des Programmes ist es eine Datei zu oeffnen und diese dann Zeile fuer Zeile auszulesen.
Jetzt moechte ich gerne, dass das Programm jede Zeile der Datei in ein Vektor schreibt. Wenn ich einen Vektor vom Typ char habe geht dieses ja nicht, da ich nur einen Buchstaben/ein Zeichen pro Byte speichern kann.
Ich braeuchte jetzt eine Loesung die quasi einen Vektor vom Typ eines Strings beinhaltet.

Programmablauf:
- Datei wird eingelesen
- Datei wird in einer while()-Schleife Zeile fuer Zeile bearbeitet
- Datei soll in dieser while()-Schleife Zeile fuer Zeile in einen Vektor geschrieben werden.

Mir fehlt nur noch der letzte Punkt.

Ich hoffe ihr versteht mein Problem. Danke.
 
Du musst in die "vektorfelder" 0-n (array[n]) jeweils zeiger auf die jeweilige zeile packen (siehe assoziative hash array in zb perl) . Allerdings macht das tatsaechlich wenig sinn - du sauberes handling von "\n" kannst du sehr bequem das gleiche resultat erzielen.
 
Oder man benutzt den new Operator in Verbindung mit dem sizeof() Operator.
Code:
 cahr *p = new char [sizeof(DATA)];
 
Ich werde es einmal ausprobieren und dann weiter schauen.
Wenn es nicht klappen sollte, melde ich mich noch einmal.

Danke fuer die Tipps.
 
Ja ihr Saftnasen, ich habe meine eigene Lösung gefunden. Ich mache es so, dass ich den Text einfach lese und ihn mir in meinem Kopf merke und dann aufschreibe in einen Vektor. Wie findet ihr diese Lösung? konflaxx@t-online.de
 
Wenn ich einen Vektor vom Typ char habe geht dieses ja nicht, da ich nur einen Buchstaben/ein Zeichen pro Byte speichern kann.

Ein Stringarray in C ist technisch gesehen ja eigentlich ein Array bestehend aus Arrays von char bzw. ein zweidimensionales char-Array bei dem die Elemente der letzten Dimension im Speicher hintereinander liegen. Das könnte z.b. so ausehen.

Code:
char mystrings[3][10] = {0};

strcpy(mystrings[0], "String1");
strcpy(mystrings[1], "String2");
strcpy(mystrings[2], "String3");

Eine andere und wahrscheinlich etwas sinnvollere Sache wäre die Verwendung eines Arrays welches aus char Zeigern besteht. Die Deklaration eines solchen Array würde so ausehen.

Code:
char* mystrings[10] = {0}

mystrings[0] = (char*)malloc(Stringlaenge);
strcpy(mystrings[0], "String");

In diesem Fall muss für jedes Element natürlich Speicher anberaumt werden. Dies kann entweder mittels malloc oder wie es foobar bereits gezeigt hat via new geschehen. Letztlich muss man aber auch bei dieser Methode die mögliche Maximalanzahl der Zeilen kennen.

Genau genommen müsste man es bei unbekannter Zeilenanzahl und Zeilenlänge
wahrscheinlich so machen:
Code:
char** mystrings = NULL;
int index = 0;
mystrings=(char*)malloc(zeilenanzahl*sizeof(char*)); 
for (index = 0; index < zeilenanzahl; index++)
  mystrings[index] = (char*)malloc(laengeeinerzeile);

Hier wird ein char-Zeiger deklariert, welcher auf dem Beginn einer Folge von char-Zeigern zeigt. Ich weiss, dass klingt dämlich. Jedoch zeigt dieser zu Beginn noch ins Nirvana und man kann ihm dann Speicherplatz, entsprechend der Anzahl der benötigten char-Zeiger zuweisen.


mfg, softrunner
 
Zurück
Oben