Schreibe ein Programm das eine Person Struktur einlesen soll und wieder ausgeben. Doch es will keine Ausgabe machen. Die Person Struktur die in der main() definiert wurde wird ohne Probleme Ausgeben nur was danach über den >> Operator eingelesen wird nicht ausgeben.
Code:
class Person
{
private:
string name;
int age;
public:
Person(string n, int a):name(n), age(a)
{
if(age < 0 || age > 150)
error ("Alter ist ungueltige!");
for(int i = 0;i<name.size();++i)
switch(name[i])
{
case ';': case ':': case '"': case '\'': case '[': case ']':
case '*': case '&': case '^': case '%': case '$': case '#':
case '@': case '!':
error ("Ungueltiger Name!");
}
}
Person() : name("Unbekannt"), age(0) {}
string name2() const { return name; }
int age2() const { return age; }
friend istream& operator>>(istream& is, Person& P);
};
Code:
istream& operator>>(istream& is, Person& P)
{
cout << "Person und Alter eingeben" << endl;
while (is>>P.name>>P.age)
{
if(P.age < 0 || P.age > 150)
error ("Alter ist ungueltige!\n");
if(!is) return is;
for(int i = 0;i<P.name.size();++i)
switch(P.name[i])
{
case ';': case ':': case '"': case '\'': case '[': case ']':
case '*': case '&': case '^': case '%': case '$': case '#':
case '@': case '!':
error ("Ungueltiger Name!");
}
}
return is;
}
ostream& operator<<(ostream& os, Person& P)
{
return os << P.name2() << " " << P.age2() << endl;
}
int main()
try{
Person P1("Goofy",63);
cout << P1;
vector <Person> ps;
Person P;
cin >> P;
ps.push_back(P);
cout << P;
keep_window_open();
}
catch (runtime_error e) {
cout << e.what() << '\n';
keep_window_open("~");
}