Anfänger Programmproblem
Habe folgendes kleines Notizprogramm (es ist noch nicht ganz fertig)
Das Problem liegt nun hier drin:
Er lässt mich in notiz nichts eingeben, er springt einfach wieder in die main Funktion zurück, wenn ich es nur mit cin mache, also so:
Dann geht zwar alles einwandfrei. Aber wenn ich es so nutze, kann er ja nur ein Wort speichern, und nicht einen vollständigen Satz.
Was mache ich falsch?
#include<iostream>
#include<fstream>
#include<string>
#include"conio.h"
#include<cstdlib>
using namespace std;
//SAVE FUNKTION
void save()
{
cout<<"Sie haben SAVE eingegeben\n";
cout<<"Sie koennen nun eine Notiz eingeben,\n";
cout<<"oder mit \"back\" ins MENU zurueck gehen\n";
string notiz;
getline (cin, notiz);
ofstream fout ("owner.txt",ios::app);
fout<<notiz;
fout<<"\t\t\t";
fout<<"Nich Erledigt\n";
fout.close();
}
//OPEN FUNKTION
void open()
{
ifstream fin ("owner.txt");
string zeilen[1000];
char line[200];
int i = 0;
fin.getline(line,200);
while (!fin.eof())
{
cout<<line<<"\n";
zeilen[i++] = line;
fin.getline(line,200);
}
}
//MAIN PROGRAMM
int main()
{
cout<<"Hallo! Ich bin ein Notizprogramm\n";
cout<<"Gib \"HELP\" ein um zu sehen, was du machen kannst\n";
string user;
while (user!="exit")
{
cin>>user;
if (user=="exit" or user=="EXIT")
{
cout<<"Sie haben das Programm beendet\n";
cout<<"Druecken sie eine Taste um das Fenster zu schliessen\n";
}
else if (user=="help" or user=="HELP")
{
cout<<"Sie haben HELP eingegeben.\n\n";
cout<<"Gebe \"SAVE\" ein um eine neue Notiz zu speichern\n";
cout<<"Gebe \"OPEN\" ein um deine Notizen zu sehen\n";
cout<<"Gebe \"EDIT\" ein um deine Notizen zu bearbeiten\n";
cout<<"gebe \"EXIT\" ein um das Programm zu beenden\n";
}
else if (user=="save" or user=="SAVE")
{
save();
}
else if (user=="open" or user=="OPEN")
{
open();
}
else
{
cout<<"Sie haben sich vertippt\n";
}
}
getch();
}
Das Problem liegt nun hier drin:
//SAVE FUNKTION
void save()
{
cout<<"Sie haben SAVE eingegeben\n";
cout<<"Sie koennen nun eine Notiz eingeben,\n";
cout<<"oder mit \"back\" ins MENU zurueck gehen\n";
string notiz;
getline (cin, notiz);
ofstream fout ("owner.txt");
fout<<notiz;
fout.close();
}
Er lässt mich in notiz nichts eingeben, er springt einfach wieder in die main Funktion zurück, wenn ich es nur mit cin mache, also so:
//SAVE FUNKTION
void save()
{
cout<<"Sie haben SAVE eingegeben\n";
cout<<"Sie koennen nun eine Notiz eingeben,\n";
cout<<"oder mit \"back\" ins MENU zurueck gehen\n";
string notiz;
cin>>notiz;
ofstream fout ("owner.txt");
fout<<notiz;
fout.close();
}
Dann geht zwar alles einwandfrei. Aber wenn ich es so nutze, kann er ja nur ein Wort speichern, und nicht einen vollständigen Satz.
Was mache ich falsch?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 84489
Url: https://administrator.de/contentid/84489
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
die Mitgliedsmethode getline() von istream erwartet als Parameter ein char-Array (auch C-String genannt) und einen Integer.
Du musst also etwas in der Form
ausführen.
Um das Ganze dann in ein String-Objekt zu konvertieren, machst du dann noch
Grüße,
Nik
P.S.: Wie kommst du auf deine Version der getline()-Methode da ???
die Mitgliedsmethode getline() von istream erwartet als Parameter ein char-Array (auch C-String genannt) und einen Integer.
Du musst also etwas in der Form
char eingabe[256];
cin.getline(eingabe, 256);
ausführen.
Um das Ganze dann in ein String-Objekt zu konvertieren, machst du dann noch
string notiz(eingabe, 256);
Grüße,
Nik
P.S.: Wie kommst du auf deine Version der getline()-Methode da ???