// Springt een beetje heen en weer tussen karakters en bijbehorende // numerieke waardes. Somt onder andere alle 256 karakters op. // Getest op 4 november 2002 Rudy van Vliet #include using namespace std; //************************************************************************* void WachtEven () { char kar; cout << "Voer een karakter in om verder te gaan: "; cin >> kar; // Mogelijke alternatieven: // kar = cin.get (); // roep de methode `get' van `cin' aan // of // cin.get (kar); // roep de methode `get' van `cin' aan // Op de werking van `cin.get' kreeg ik niet voldoende vat. } //************************************************************************* void Schrijf (int i, char kar) // schrijf eerst de integer i en dan het karakter kar { cout << "i = " << i << endl; cout << "kar = " << kar << endl; cout << endl; } // Schrijf //************************************************************************* void Schrijf (char kar, int i) // schrijf eerst het karakter kar en dan de integer i { cout << "kar = " << kar << endl; cout << "i = " << i << endl; cout << endl; } // Schrijf //************************************************************************* int main () { int i; char kar; // eerst een paar eenvoudige conversies: // van integer naar karakter i = 65; kar = i; cout << "i = " << i << endl; cout << 'i' << ' ' << '=' << ' ' << i << '\n'; cout << "kar = " << kar << endl; cout << "kar = '" << kar << "'\n"; cout << endl; // van karakter naar integer kar = 'B'; i = kar; Schrijf (kar, i); WachtEven (); // welke waardes horen bij enkele speciale karakters // (zie blz 10 van het boek van Ammeraal, in iets // andere volgorde) i = 7; kar = i; cout << "geluidje:\n"; Schrijf (i, kar); WachtEven (); kar = '\b'; i = kar; cout << "backspace:\n"; Schrijf (kar, i); kar = '\t'; i = kar; cout << "horizontale tab:\n"; Schrijf (kar, i); kar = '\n'; i = kar; cout << "newline:\n"; Schrijf (kar, i); kar = '\v'; i = kar; cout << "verticale tab:\n"; Schrijf (kar, i); kar = '\r'; i = kar; cout << "carriage return:\n"; Schrijf (kar, i); WachtEven (); kar = '\\'; i = kar; cout << "backslash:\n"; Schrijf (kar, i); kar = '\''; i = kar; cout << "apostrof:\n"; Schrijf (kar, i); kar = '\"'; i = kar; cout << "aanhalingsteken:\n"; Schrijf (kar, i); kar = ' '; i = kar; cout << "spatie:\n"; Schrijf (kar, i); kar = '\377'; // octaal voor 255; // groter (bijv. 400) wordt niet geaccepteerd // door de compiler i = kar; cout << "bitpatroon 377:\n"; Schrijf (kar, i); kar = '\x7E'; // hexadecimaal voor 126 i = kar; cout << "bitpatroon x7E:\n"; Schrijf (kar, i); WachtEven (); // nu geven we alle 256 karakters, in drie stappen cout << "De eerste 14 karakters zijn:\n"; for (i=0;i<=13;i++) { kar = i; cout << "-|-" << kar; } // `(char) 7' is een leeg karakter (alleen een geluidje) // `(char) 8' is een back space // `(char) 9' is een horizontale tab // `(char) 10' is een newline // `(char) 13' is een carriage return! // je zou het voorgaande op de regel kwijtraken // als je op diezelfde regel verder zou schrijven cout << endl; cout << "De volgende 114 karakters zijn:\n"; for (i=14;i<=127;i++) { kar = i; cout << '-' << kar; } cout << endl; cout << "De laatste 128 karakters zijn:\n"; for (i=128;i<=255;i++) { kar = i; cout.put ('-'); // roep de methode `put' van `cout' aan cout.put (kar); // roep de methode `put' van `cout' aan } cout << endl; WachtEven (); // wat gebeurt er met getallen > 255 i = 321; // 256 + 65 kar = i; Schrijf (i, kar); // ten slotte een wellicht verrassende conversie: // van integer naar karakter en dan weer terug naar integer; // we krijgen een andere waarde! i = 135; kar = i; Schrijf (i, kar); i = kar; Schrijf (kar, i); return 0; }