Es gibt zwei Möglichkeiten, ein ASCII-Zeichen in eine "char"-Variable zu speichern: Die direkte und die über den ASCII-Code:
char direkt='A'; //Direkte Zuweisung in
//einfachen Anführungsstrichen
char mit_code=65; //65 ist der ASCII-Code für 'A'
char's einlesen und ausgeben
Es gibt mehrere Funktionen zum Einlesen von charactern, wobei danach umbedingt der Puffer geleert werden sollte, da die Eingabe bei keiner der Standardfunktionen nach einem Zeichen abbricht ("getch" ist keine Funktion des C++-Standards!)...
Ansonsten kann man z.B.: "std::cin" nutzen, sollte aber beachten, dass Leerzeichen, Taulatoren oder Zeilenvorschübe ein Eingabeende zur Folge haben!
Dies ist bei "ch=cin.get()" nicht der Fall! Hier würden auch solche Leerräume eingelesen.
Das Problem liegt eher in der Eingabe von mehreren Zeichen hintereinander:
Was?
User drückt:
Puffer
erste Eingabe: ch1= cin.get();
[a][z][Enter]
[a][z][\n]
cin.get hohlt ein Zeichen aus dem Puffer
-
[z][\n]
zweite "Eingabe": ch2= cin.get();
-
[z][\n]
cin.get hohlt zweites Zeichen aus dem Puffer...
-
[\n]
dritte "Eingabe": ch3= cin.get();
-
[\n]
cin.get hohlt noch ein Zeichen aus dem Puffer...
-
<leer>
=> Jetzt erst kann der Benutzer wieder eine Taste drücken...
Von den drei Eingaben ist nicht viel übrig geblieben...!
Daher sollte man stets den Puffer löschen, wenn man mit solchen Funktionen gearbeitet hat!
Die Ausgabe hingegen kann ganz einfach über "std::cout" erfolgen! Eine zweite Möglichkeit stellt "std::cin.put(ch3);" dar...
ASCII-Tabelle generieren
...geht ganz einfach mit "char" und casts:
[348B]
//ascii.cpp
#include <iostream>
int main()
{
std::cout<<"Tabelle:\n";
for(int j=32; j<128; j++)//Die Steuerzeichen am Anfang bleiben weg...
{
//static_cast gibt hier keine Zahl, sondern das dieser
// zugewiesene ASCII-Zeichen aus... ;)
std::cout<< j <<":"<<static_cast<char>(j)<<" ";
}
std::cout<< std::endl;
return0;
}
Wie geht's weiter?
Mit Arrays aus char's, die dann Zeichenketten wie z.B. Wörter oder Sätze speichern können: C-strings!