Umlaute
-
Hallo,
wie kann ich in einem C++Programm Umlaute etc. darstellen, ohne das sie total verkrüppelt werden.
Also ich meine den Befehl der in HTML in etwa ä oder ß und so entsprichtarmin
-
schue mal in die Konsolen FAQ
ps. ich verscheibe mal den thread ins Konsolen Forum[ Dieser Beitrag wurde am 24.07.2002 um 21:18 Uhr von Dimah editiert. ]
-
#include <iostream.h> // cout #include <windows.h> // CharToOem int main(int argc, char* argv[]) { char szUmlauteVorher[50] = "Ändern,Öffnen,Schließen,Üben"; char szUmlauteNachher[50] = ""; CharToOem(szUmlauteVorher,szUmlauteNachher); cout << "Hier der String vor der Konvertierung = " << szUmlauteVorher << endl << endl; cout << "Hier der String nach der Konvertierung = " << szUmlauteNachher << endl; return 0; }
-
Danke schon mal.
Und einfacher geht des nicht? Ich muss das also immer zuerst in eine Variable einspeichern, und die dann bearbeiten??
Armin
-
Hallo,
"einfacher" geht's schon aber nur mit Marke Eigenbau...
#include <string.h> #include <iostream.h> // Die Funktion sc liefert einen Zeiger auf einen String zurück. // Übergabeparameter ist ein Stringarray bzw. ein Stringkonstante. // Aufgabe der Funktion ist das konvertieren von Umlauten wie // Ü,ü,Ö,ö,Ä,ä und ß. // Erstellt am 08.08.2000 von T2000 char* sc(char* String) { static char strnew[100]; // Maximale Stringlänge im Moment 99 Zeichen + '\0' int character=0; for(unsigned int i=0;i<strlen(String);i++) { character = String[i]; switch(character) { case -42: // Ö strnew[i] = '\x99'; continue; case -36: // Ü strnew[i] = '\x9A'; continue; case -60: // Ä strnew[i] = '\x8E'; continue; case -28: // ä strnew[i] = '\x84'; continue; case -4: // ü strnew[i] = '\x81'; continue; case -10: // ö strnew[i] = '\x94'; continue; case -33: // ß strnew[i] = '\xE1'; continue; default: strnew[i] = String[i]; } // Von switch } // Von for strnew[i]='\0'; // Nullzeichen anfügen. return strnew; } int main(int argc, char* argv[]) { cout << "Schließen,Öffnen,Ändern,Üben" << endl; cout << sc("Schließen,Öffnen,Ändern,Üben") << endl; return 0; }
-
#include <iostream> // cout
#include <windows.h> // CharToOemint main(int argc, char* argv[])
{
char szUmlauteVorher[50] = "Ändern,Öffnen,Üben,Schließen";
char szUmlauteNachher[50] = "";
char szUmlauteZurueck[50] = "";
char test[50];
char test2[50];CharToOem(szUmlauteVorher,szUmlauteNachher);
std::cout << "vor der Konvertierung = " << szUmlauteVorher << std::endl;
std::cout << "nach der Konvertierung = " << szUmlauteNachher << std::endl;return 0;
system("PAUSE");
}
-
Gerard schrieb:
schue mal in die Konsolen FAQ
ps. ich verscheibe mal den thread ins Konsolen Forum[ Dieser Beitrag wurde am 24.07.2002 um 21:18 Uhr von Dimah editiert. ]
Das hab ich mal Versucht, aber mein Compiler hat mir ne Fehlermeldung ausgegeben!
-
du kannst au den ascii zeichesatz verwenden und dann die hex zahlen verwenden
-> http://www.physik.fu-berlin.de/~goerz/misc/ascii.gif
-
Also mit Variablen geht's so:
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);