Warum kann ich im ersten Array einer Liste nichts mit std :: cin.getline() speichern?
-
Hi,
Mithilfe von Listen kann man ja mehr oder weniger einfach eine nicht bekannte Anzahl an Variable erstellen. Hab das Prinzip verstanden und die (Test-)Programme laufen auch gut. Aber warum wird beim ersten ausführen der for-Schleife immer die std :: cin.getline()-Anweisung übersprungen?#include <iostream> #include <conio.h> struct MyOwnList { char data[255]; //warum geht hier nicht: char data[255] = {'\0',}; ? MyOwnList *next; }; int main() { int NumberOfMyListPoints;//Gibt die Größe der Liste an MyOwnList *PointInList = NULL; //"Anker"=>Pointer auf den nächsten Wert MyOwnList *buffer = NULL; //Zum löschen.... std :: cout << "Geben sie die Menge an" << std :: endl; std :: cin >> NumberOfMyListPoints; for (int i = 1; i <= NumberOfMyListPoints; i++) { MyOwnList *temp = new MyOwnList; //Neue Liste erstellen //for (int ii = 0; ii <= 255; ii++) temp->data[i] = '\0'; => bringt auch nix std :: cout << "Inhalt: "; std :: cin.getline(temp->data,255); temp->next = PointInList; //temp.next auf den "Anker" zeigen lassen PointInList = temp; //Anker zeigt auf temp } //Ja ich weiss die Ausgabe ist rückwärst, für das Beispiel aber nicht schlimm... for (int i = 1; i <= NumberOfMyListPoints; i++) { std :: cout << std :: endl; std :: cout << "Inhalt: " << PointInList->data << std :: endl; buffer = PointInList; PointInList = PointInList->next; delete buffer; } getchar(); }Mit std :: cin >> gehts ohne Problme und bei std :: cin.getline() ist das Problem wie gesagt bei der ersten Variable? Warum?
Die Variable mit '\0' zu füllen brachte nichts(2.for-Schleife) bzw. wollte mein Compiler nicht als korrekt ansehen(struct...-Warum eigentlich)
Danke
-
Pille456 schrieb:
Mit std :: cin >> gehts ohne Problme und bei std :: cin.getline() ist das Problem wie gesagt bei der ersten Variable? Warum?
Vor dem ersten getline() Aufruf stehen noch die Reste der früheren Eingabe (cin>>Number;) im Eingabepuffer - die mußt du erst per ignore() entsorgen, bevor du "richtig" einlesen kannst.
Die Variable mit '\0' zu füllen brachte nichts(2.for-Schleife) bzw. wollte mein Compiler nicht als korrekt ansehen(struct...-Warum eigentlich)
DankeStruct-Member kannst du nicht bei der Deklaration füllen, sondern erst im Ctor (wenn das überhaupt nötig ist).
PS: Was spricht eigentlich dagegen, std::string und std::list zu verwenden?
-
Nichts^^
Im "richtigen" Programm nutze ich auch lieber std::string bzw. list aber das war nur mal zum rumprobieren und besseren verstehen...
Danke
p.s. was meinst du mit Ctor?
-
Pille456 schrieb:
p.s. was meinst du mit Ctor?
Konstruktor
(auch structs dürfen einen haben, wenn du ihn benötigst ;))
-
hehe achso
