Array lässt sich kein zweites Mal füllen
-
und was genau erwartest du von der Zeile
myArray[-1] = 0;
-
Array lässt sich kein zweites Mal füllen
Na klar. Es ist ja auch schon voll. xD
*SCNR*

Würde jetzt auch noch gerne eine kompetente Antwort geben, aber muss gerade los. Sorry.

-
@Skym0sh0
Was ich möchte ist, dass der Benutzer einen zweiten Eintrag machen kann wenn er möchte.Erste Eingabe sieht so aus:
Text : Beispiel
Datum : Beispiel
Zeit : BeispielNach Auswahl eine neue Eingabe zu machen kommt folgendes:
Test :
Datum : Beispiel
Zeit : BeispielEr gibt mir im zweiten Durchlauf keine Chancen, den Text für den Eintrag anzugeben. Er fragt zwar danach, springt dann aber direkt weiter um nach dem Datum zu fragen, ohne eine Eingabe abzuwarten.
Hab gelesen das Strings immer mit einer 0 abgeschlossen werden und dies wollte
ich damit machen.
-
Aber -1 ist ja der Index vor dem ersten Index, das ist überhaupt kein gültiger Eintrag. Dachtest Du, das ist dann am Ende?
Also wenn Du oben einfach statt cin.getline(...) ebenfalls getline(cin, ...) nutzt, kannst Du direkt den String angeben. Und std::strings sind eh nullterminiert.
Und möglicherweise löst das auch Dein Überspringproblem.
-
@Eisflamme : Ja blöderweise habe ich wirklich gedacht es wäre der letzte Index o.O
Wenn ich ehrlich bin habe ich auch nie infrage gestellt ohne Array zu arbeiten.
Einmal geschrieben war es quasi gesetzt und wurde nicht mehr von mir hinterfragt
Danke schonmal für den DenkanstoßAber was bleibt:
Wenn ich die cin.getline Sache z.B. so abändere:
string sText; cout << "Geben Sie die Nachricht fuer Ihren Kalendereintrag ein: " << endl; getline(cin, sText);Bleibt immer noch der selbe Fehler

-
Samp schrieb:
Er gibt mir im zweiten Durchlauf keine Chancen, den Text für den Eintrag anzugeben. Er fragt zwar danach, springt dann aber direkt weiter um nach dem Datum zu fragen, ohne eine Eingabe abzuwarten.
Das tut er deshalb, weil Du in Zeile 57 zwar die Antwort von std::cin liest aber nicht das Ende der Zeile. Letzteres steht noch im Eingabestream und wird nach einer positive Antwort in Zeile 16 als leerer Eintrag gelesen.
Füge zwischen den Zeilen 8 und 9 ein
cin >> ws;ein.
Gruß
Werner
-
Super ich danke dir vielmals. Genau das war das Problem und ich hätte
auf ewig an der falschen stelle gesucht.Wenn du noch kurz Zeit hättest, würde ich gerne wissen was genau durch
cin >> ws; passiert?ps: Achja bevor ich es vergesse. Großes Lob ans Forum! Schnelle und produktive Antworten sucht man im Netz oft vergebens. Schön das es hier anders war

-
Samp schrieb:
Wenn du noch kurz Zeit hättest, würde ich gerne wissen was genau durch
cin >> ws; passiert?Der Ausdruck liest alle White Space Character. Siehe auch std::ws. Falls dann noch Fragen bleiben, bitte melden.
Samp schrieb:
ps: Achja bevor ich es vergesse. Großes Lob ans Forum! Schnelle und produktive Antworten sucht man im Netz oft vergebens. Schön das es hier anders war

ja das freut uns - also Willkommen im C++-Forum!
Ansonsten kannst Du noch die Zeilen 29 bis 53 durch
{ ofstream myFile ("L:/Thomas/C++/Datapool/Kalender.txt", ios::app); // ios::out ist unnötig, ein ofstream hat immer ios::out myFile << day << "." << month << "." << year << " " << hour << ":" << minute << " | " << myArray << endl; }ersetzen.
das tut genau das gleiche, wie der ganze Rest.
Gruß
Werner
-
system("PAUSE")müßtest Du Dir überlegen, ob das sinnvoll ist, da das ausschließlich unter Windows
funktioniert.
Eine Alternative wäre evtl.:cin.clear(); cin.ignore(256, '\n'); cout << "Weiter mit Return..." << endl; cin.get();Eine andere Frage wäre, ob das verwendete c-array sinnvoll ist.
Weiß gerade nicht, ob die Anzahl der zu speichernden Werte von vornherein fix ist. Falls nicht, wäre ein std::vector besser, Infos kannst Du unter
http://www.cplusplus.com/reference/stl/vector/push_back/ nachlesen.Und es wäre schön, wenn Du die c++-tags zum posten von Code benutzt, das ist
dann noch lesbarer.
-