cin.get Funktion C++ < Formale Sprachen < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:13 So 11.05.2008 | Autor: | misterET |
Hallo Leute, habe ein Programm geschrieben, finde den Fehler nicht, da auch keine Fehlermeldung erscheint.
Meine Frage steht etwas weiter unten im Quelltext...
#include <iostream>
using namespace std;
int main(void)
{
int a;
struct student
{
char name[30];
int matr_nr;
int jahrgang;
char fachgebiet[15];
char abschluss[10];
};
student neuer;
cout <<"Geben Sie Ihren Namen ein: ";
cin.get(neuer.name, 30, [mm] '\n'); [/mm]
cout <<"Matrikelnummer: ";
cin >> neuer.matr_nr;
cout <<"Jahrgang: ";
cin >> neuer.jahrgang;
cout << "Fachgebiet: ";
cin >> neuer.fachgebiet;
cout << "Abschluss: ";
cin >> neuer.abschluss;
//Meine Frage: Wenn ich an dieser Stelle schreibe:
//cin.get(neuer.abschluss, 10, [mm] '\n');
[/mm]
//Wiese bricht das Prgramm dann ab??? Oben habe ich
//es doch auch mit der get()-Funktion stehen und es
//funktioniert!!!
cout << [mm] "\n\nAusgabe:\n";
[/mm]
cout << "Name: " << neuer.name << endl;
cout << "Matrikelnummer: "<< neuer.matr_nr << endl;
cout << "Jahrgang: "<< neuer.jahrgang << endl;
cout << "Fachgebiet: " << neuer.fachgebiet << endl;
cout << "Abschluss: " << neuer.abschluss << endl;
cin >>a;
}
|
|
|
|
Hallo misterET,
> cout <<"Geben Sie Ihren Namen ein: ";
> cin.get(neuer.name, 30, [mm]'\n');[/mm]
> [..]
> cin >> neuer.fachgebiet;
> [..]
> //Meine Frage: Wenn ich an dieser Stelle schreibe:
> //cin.get(neuer.abschluss, 10, [mm]'\n');[/mm]
> //Wiese bricht das Prgramm dann ab??? Oben habe ich
> //es doch auch mit der get()-Funktion stehen und es
> //funktioniert!!!
Ich vermute der >>-Operator macht etwas mehr als cin.get(). Es scheint so zu sein, dass nach
cin >> neuer.fachgebiet
das '\n'-Zeichen noch im Eingabepuffer verbleibt. Versuch' es mal mit
1: |
| 2: | cin.ignore(1);cin.get(...)
|
mit ignore() wird genau 1 Zeichen im Puffer überlesen.
Grüße
Karl
|
|
|
|