Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

20.08.2005, 18:10

Umlaute in c++ ?

Also ka.

ich dachte mir so (is aber umständlich jedesmal):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>

using namespace std;

int main()
{


    char chZeichen1o[]="";
    char chZeichen2a[]="";
    char chZeichen3u[]="";
     
    cout<<"Um die dt. Umlaute korrekt darstellen zu koennen muss der Computer diese erst kennen";
    cout<<endl;
    cout<<"Bitte das o mit den \" :";
    cin>>chZeichen1o;
    cout<<endl;
    cout<<"Bitte das a mit den \" :";
    cin>>chZeichen2a;
    cout<<endl;
    cout<<"Bitte das u mit den \" :";
    cin>>chZeichen3u;

    

    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<endl;
    cout<<"Gleichf"<<chZeichen1o<<"rmig,
"K<<chZeichen1o<<"rpern"<<endl<<endl;
   

    return 0;

}
[/code]

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

20.08.2005, 18:32

Der Compuer kennt Umlaute, da diese im ASCII Zeichensatz definiert sind. Google mal danach. SDchreib duir einfach ne Funktion die durch den ganzen String druchgeht und die Zeichen ersetzt.

DrthM2001

Alter Hase

Beiträge: 721

Wohnort: Karlsruhe

  • Private Nachricht senden

3

20.08.2005, 18:40

Re: Umlaute in c++ ?

Zitat von »"mr Heavy"«

"Um die dt. Umlaute korrekt darstellen zu koennen muss der Computer diese erst kennen"


ROFL :-D :-D :-D

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

20.08.2005, 23:32

Ich find das gar nicht so lustig. Laut dem ASCII Zeichensatz gibt es kein Ä ö usw.

das gibt es nur in der ANSI-Zeichensatztabelle.

Die ASCII Zeichensatztabelle geht nur von 0 bis 127 Zeichen während die ANSI Zeichensatztabelle von 0 bis 255 geht.

Da jedoch viele für strings char benutzen was dem ASCII-Zeichensatz entspricht (0-127) können keine Umlaute dargestellt werden. Benutzt man jedoch unsigned char (0-255) welches dem ANSI Zeichensatz entspricht sieht die Welt wieder anders aus.

Da der jedoch nicht überall unterstützt wird, hilft hier nur das gute und von mir geliebte alte: wchar_t.

Die Console kann oft keine Sonderzeichen wie Umlaute darstellen, da es unter Windows wie in UNIX nur auf der ASCII-Zeichensatztabelle ausgelegt wurde. Ergo kann man nur mit ein Paar Hacks Umlaute darstellen:

z. B. so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
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); 
// Verwendungsbeispiel 

cout << UE << "ben" << endl;


Wie man hier sehen kann wird dank unsigned char der ANSI Zeichensatz benutzt. Anders geht es auch mit folgendem "Hack" über die Escapesequenzen machen, dafür sollte man jedoch eine ANSI-Zeichensatztabelle daneben liegen haben!

Quellcode

1
2
3
4
5
6
7
8
9
 Zeichen     Hex    Oktal 
======================== 
   'Ä'       8E     216 
   'ä'       84     204 
   'Ö'       99     231 
   'ö'       94     224 
   'Ü'       9A     232 
   'ü'       81     201 
   'ß'       E1     341


Verwendung:

C-/C++-Quelltext

1
std::cout << "Schlage deine \x8euglein zu." << std::endl;


Eine gute Tabelle Findet man hier oder in jedem guten Computerladen als Poster für an die Wand ;)

http://www.torsten-horn.de/techdocs/ascii.htm

- Patrick

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

5

20.08.2005, 23:52

Ich würde mir darum keine Sorgen machen.
Wenn du auf Fenster umsteigst und die ollen Konsolen hinter dir lässt löst sich das Problem quasi von selbst. Dann kannst du ohne Probleme Umlaute in die Strings schreiben.
Nur mit "exotischen" Zeichen (chinesisch) könnte es etwas schwierig werden, da man dann Unicode benutzen muss.

Ciao

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

6

21.08.2005, 00:08

Helmut
Bei der Windowsprogrammierung sollte man endlich char den Gnadenschuss geben. Wir leben doch nicht mehr in der Steinzeit ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

7

21.08.2005, 00:15

Naja Steinzeit hat sowas kontrollierbares und überschaubares^^
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

8

21.08.2005, 00:24

Tja, hat unicode aber auch ;)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_6bqr.asp

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

21.08.2005, 00:29

Anders gesagt:
ich hasse templates, string, std_vector und co :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

10

21.08.2005, 00:37

Und was sollen dann die armen Win98/ME Nutzer machen???

Werbeanzeige