C++: cin: nur ein buchstabe dann weiter

hi.

wie programmiere ich eine typische y / n eingabe?

damit meine ich:

der benutzer wird etwas gefragt, er soll darauf hin mit y für ja oder mit n für nein antworten.

wenn ich dies mit cin << x; mache, wartet er immer bis der benutzer enter gedrückt hat. ich will aber, dass er sofort 'weiter im programm' geht, sobald der benutzer eine taste gedrückt hat. zudem kann der benutzer dann mehr wie einen buchstaben eingeben. kann ich dies auch irgendwie verhindern?

und noch eine zweite frage: gibt es soetwas wie eine 'komplette referenz' zu c++ befehlen? soetwas, al? php.net für php, oder selfhtml..?

mfg,
little
 
Eine komplette Referenz gibt es nicht, da es ja relativ viele kleinere und größere Bibliotheken gibt, die von Compiler zu Compiler variieren.
Zu ISO-C++ kann ich dir http://cplusplus.com/ref/ empfehlen, eine Referenz über die wichtigsten Standardheader. Da gibts auch ein ziemlich gutes Tutorial.
Ansonsten ist http://www.boost.org/ eine gute Sammlung von diversen Klassen für verschiedenste Zwecke, natürlich portabel.
Das mit der Ja/Nein Abfrage weiß ich auf Anhieb nicht.
 
wenn du windows nutzt, kannst du die funktion getche (mit ausgabe des zeichens) bzw. getch (ohne ausgabe) aus der conio.h verwenden.
 
danke, genau das habe ich gesucht :)

allerdings liefert mir getch nicht den wert zurück, welcher eingegeben wurde, sondern nur den dez. ascii-wert.

gibt es eine funktion ... nein, besser, wie lautet die funktion welche mir den dezimalen ascii-wert eines zeichens zurückliefert?
 
Original von little_Newbie
allerdings liefert mir getch nicht den wert zurück, welcher eingegeben wurde, sondern nur den dez. ascii-wert.

gibt es eine funktion ... nein, besser, wie lautet die funktion welche mir den dezimalen ascii-wert eines zeichens zurückliefert?
das funktioniert durch typecasts:

int dezimalwert = (int) 'a';

aber in deinem fall ist es wohl sinnvoller, von zahl nach buchstabe zu typecasten und dann den vergleich zu machen:
char buchstabe = (char) getch();
if(buchstabe == 'y') ...

wobei bei man die typecasts nicht explizit machen muss, da von char nach int oder int nach char automatisch getypecasted wird.
also direkt
int dezimalwert = 'a';
bzw
char buchstabe = getch();
soltle auch funzen.
 
Ist '_getch' nicht C? Also ich mein das funzt zwar damit, aber gibt es nicht einen Befehl für C++? Weil es ist ja nicht gerade toller Programmier-Stil zwei Sprachen zu vermischen...

Und (ist zwar OT, aber egal): Wie lösche ich in C++ meinen Konsolen-Inhalt? Also alles, was mein Programm bisher erzeugt hat...
 
Hallo,
@LaNdRiX: C++ ist doch eh einer Erweiterung von C, und beinhaltet alle Funktionen von C.
Wieso vermischt man dort dann 2 Sprachen, und was macht man mit den Funktionen, die es schon in C enthalten waren, wie pow, ceil, floor, rand etc.?
Dafür gibt es keine extra neuen C++ Funktionen, warum auch.
 
Achso okay:) Ist mir eigentlich schon klar, aber ich arbeite mit meinem Nachbarn grade an einer Aufgabe für den "25. Bundeswetbewerb Informatik" und wir dachten uns, es macht einen schlechten Eindruck, wenn wir die 'conio' Standart-Bibliothek von C in unser C++ Programm einbinden...
 
Original von Elderan
C++ ist doch eh einer Erweiterung von C
C++ ist die objektorientierte Erweiterung von C. Wer kein objektorientiertes Konzept umsetzt, programmiert in C.

Wer sich den erweiterten Sprachumfang von C++ zunutze macht und kein objektorientiertes Konzept umsetzt, der vermischt zwei unvereinbare Programmier-Stile.

Das klingt zwar oberlehrerhaft, aber probiere mal bei einem Team-Projekt eine globale Variable einzuführen. Was glaubt Du was es dann für ein Gemecker gibt. :)
 
cout<<"\nJa oder Nein (y/n): ";
cin.getline(eingabe,1,'\n');

wobei eingabe die variable ist (char) und 1 die Länge. \n ist dann ein Zeilen umbruch.

Musst dann nurmehr mit if Abfragen ob eingabe[0] j oda n ist.

der rest vom eingegeben string wird dann abgeschnitten.
nur der erste buchstabe wir gespeichert!
 
ja, so habe ic hdas bis jetzt auch gemacht, aber system("cls") ist nunmal nicht sehr elegant, wäre für eine andere lösung dankbar
 
gibts da überhaupt vernünftige andere lösung ohne externe header-dateien einbinden zu müssen? Gibts da auch in C andere lösungen dazu?
 
Was heißt 'gibt es was vernünftigeres' und 'ist nicht elegant'?
system("cls") erfüllt seinen Zweck - was will man da eleganter oder vernünftiger machen? X(
 
ich hab einfach nach einer anderen methode gefragt. und es hat auch niemand gefragt wie es unter Linux gehn könnte was ich so mitbekommen habe.
 
Zurück
Oben