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

1

23.02.2013, 18:26

Umlaute mit cin einlesen

Hallo Leute

Ich habe gerade versucht in einem Programm einen Umlaut mit cin einzulesen und dann mit if abzufragen was für ein Buchstabe eingegeben wurde. Aber wenn ich den Umlaut eingebe reagiert die if Bedingung nicht. Damit ihr versteht was ich meine ist hier mal ein kleines Beispiel:

Quellcode

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
// Umlaute
#include <iostream>

using namespace std;

int main ()
{
    // Variablen
    //
    char chBuchstabe;

    cout << "Umlaut eingeben: ";
    cin >> chBuchstabe;
    
    if (chBuchstabe == 'ä')
    {
        cout << "If wurde ausgeführt" << endl;
    }
    else
    {
        cout << "If wurde nicht ausgefuehrt" << endl;
    }

    return 0;
}


Wenn ich im Programm dann ein 'ä' eingebe wird nur der else Block ausgeführt obwohl ich ein 'ä' eingegeben habe. Was muss ich machen, dass ich auch Umlaute einlesen kann? Bitte helft mir! Ich habe schon im Internet nach einem Code dafür gesucht aber ich habe nichts gefunden.

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

2

23.02.2013, 18:37

Lese mal aus der Konsole ein unsigned char aus und überprüfe ob es (unsigned char)132 enthält.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

3

23.02.2013, 18:53

Versuchs mal mit \x84 antstatt ä

4

23.02.2013, 18:57

Ich weiß jetzt nicht genau was du meinst aber ich habe jetzt mal ein unsigned char erstellt und dann mit cin einen Wert abgefragt und dann mit cout wieder ausgegeben aber ich weiß nicht genau wo ich nach 132 suchen soll.

birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

5

23.02.2013, 19:04

Quellcode

1
2
3
4
5
6
7
unsigned char buchstabe;
cin >> buchstabe;

if(buchstabe == (unsigned char)132)
...
else
...

6

23.02.2013, 19:08

Die Lösung hat bei mir nicht funktioniert. Bei mir wurde trotzdem der else Block ausgeführt.

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

7

23.02.2013, 19:19

Dann nimm anstatt 132 mal 0x84

8

23.02.2013, 19:22

Hat leider auch nicht funktioniert :(

9

23.02.2013, 20:22

OK ich habs jetzt gelöst danke für die Antworten

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

10

23.02.2013, 20:26

Wie hast du es denn gelöst? Andere, die das Thema lesen, könnte das vielleicht interessieren. ;)

Ich tippe einfach mal darauf, dass du nicht auf die Zeichencodierung geachtet hast. Vielleicht liefert deine Konsole Unicode und dein Quellcode ist nicht als Unicode gespeichert. Allerdings ist das eher ein rumgerate...
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige