Zurück zu Pi7.eu
BLOG
Umlaute in der Konsole verwenden
Hallo,

in diesem Blog will ich kurz darauf eingehen wie man am einfachsten und am übersichtlichsten Umlaute in der Konsole mit C++ verwenden kann. Die koplette Anleitung findet ihr als kommentare im Code vor:




/*
Das üblich um die Konsole zu verwenden
*/

#include <iostream>
using namespace std;


/*
Hier definieren wir den Namespace Umlaut und weisen dem
eweiligen Umlaut den ASCII-Wert der echten Umlaute zu.
Nur so kann man dann die Umlaute in der Konsole ausgeben.
*/

namespace Umlaut
 {
 const unsigned char AE = static_cast<unsigned char>(142);
 const unsigned char ae = static_cast<unsigned char>(132);
 const unsigned char OE = static_cast<unsigned char>(153);
 const unsigned char oe = static_cast<unsigned char>(148);
 const unsigned char UE = static_cast<unsigned char>(154);
 const unsigned char ue = static_cast<unsigned char>(129);
 const unsigned char ss = static_cast<unsigned char>(225);
 }


/*
Damit wir nicht bei jedem Umlaut extra "Umlaut::" schreiben müssen
verwenden wir den Namespace Umlaut.
*/

using namespace Umlaut;


/*
Ausführung des Scripts um alles zu Testen
*/

int main(void)
 {
 cout<<"Täßten! äÄöÖüÜß\n"; // falsch
 cout<<"T"<<ae<<ss<<"ten! "<<ae<<AE<<oe<<OE<<ue<<UE<<ss"\n";// richtig
 return 0;
 }


Ausgabe:
Tõ▀ten! õ-÷ͳ▄▀
Täßten! äÄöÖüÜß





Ihr könnt das übrigens auch für alle anderen Sonderzeichen anwenden!
Zum Beispiel
für © müsst ihr einfach nur den ASCII-Wert einsetzen und fertig!

 const unsigned char UE = static_cast<unsigned char>(169);

Anstatt ® zu bekommen, bekommt ihr dann das gewünschte COPYRIGHT - Zeichen!!




viel Spaß beim Coden
euer Pi
Autor: Pierre
erstellt am 20.07.2009 21:55 - aktualisiert am 20.07.2009 21:55
337 Aufrufe
...
You can share this Blog on Facebook, Google+ and Twitter! ... tell the world the truth
muffinhunter

26.06.2010 15:47
eine frage: muss des unsigned da stehen? des heißt doch "ohne vorzeichen" - hat ein char (Zeichen) denn Vorzeichen?
bitte klär mit auf :verwirrt:
FTK

27.06.2010 21:55
Der ASCII-Code hat ja eigentlich nur 128 Zeichen, was sieben Bit enspricht. Ebensoviele hat eine Char-Variable - plus ein Vorzeichen-Bit. Will man nun aber den erweiterten Code (mit den Sonderzeichen, d.h solchen deren Nummer höher als 127 ist, man spricht vom "erweiterten ASCII-Satz";) verwenden, wird eben dieses Bit gebraucht. Also teilt man dem Compiler mit, dass man das achte Bit für Zahlen verwenden möchte.

Mit den Sonderzeichen gibt es im Übrigen ein Problem. Ihre Nummer ist nämlich schon seit MS-DOS-Zeiten länderspezifisch. Mit anderen Worten: was bei uns als ein "Ä" angezeigt wird, ist in anderen Ländern etwas ganz anderes.
muffinhunter

28.06.2010 00:12
Habs grad getestet: mit #define geht`s viel kürzer (is fast das selbe wie hier)
z.B. für die Konstante ue (die ü verkörpert)

#define ue static_cast<unsigned char>(129)        

oder

#define ue "/x81"                  //sogenannter OEM-Code statt ASCII-Code

// Das einfache / hier bitte durch das Escape- Zeichen ersetzen
(wird von pi7 leider nicht angezeigt - liegt evtl an html, was weiß ich ^^)

Da stellt sich mir die Frage:
Wozu braucht man dann einen neuen namespace, wenns auch ohne geht?

@FTK: Wozu braucht man das Vorzeichen beim Char? Wenn man nur den
normalen ASCII-Code benutzt, dann wird des ja nich benötigt. Wenn man den
erweiterten benutzt, wirds eben mitverwendet. Braucht man dann jemals ein
signed char? Gibts sowas überhaupt?

bzw: Heißt des etwa, dass der Compiler bei nem Vorzeichen vorm Char
erkennt "aha, da brauch ich nur den ASCII-Code" und bei unsigned "aha, der
will Sonderzeichen" oder so? (ich glaub, ich lass mir meine Fragen hierzu bald
in nem Foren-Topic beantworten ^^)

PS: Toller Blog :super: