Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Sonderzeichen

  1. #1
    Registrierter Benutzer
    Registriert seit
    10.09.2010
    Beiträge
    6

    Sonderzeichen

    Hallo,

    wie kann ich Sonderzeichen, z.B. ä,ü,ß oder auch ()³, in C++ programmieren.
    Es geht um die reine Textausgabe von z.B. Höhe. In den Tutorials die ich habe bin ich dazu nicht fündig geworden.
    Die Umsetzung muss dann unter Win funktionieren (legt man auf der Fachschule Wert das alles beim Alten bleibt)

    Danke
    Geändert von Pumuckl (17-01-2011 um 14:05 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Die Frage ist sehr allgemein gehalten und schwierig zu beantworten (und ich bin auch kein Experte für Zeichensätze). Wenn du ein konkretes Beispiel präsentierst, dann kann ich vielleicht helfen.

    Wenn die Frage danach ist, wie man "Sonderzeichen" in der Quelldatei eingibt, dann gilt dieses:
    ("Sonderzeichen" in Anführungszeichen weil ä, ö, ü z.B. ja ganz normale Zeichen sind, nur eben nicht ASCII)

    Es gibt eine Form von Escapesequenz für Character- und String-Literale mit der man Unicode Zeichen anforden kann, die geht so \uhhhh oder \Uhhhhhhhh wobei jedes h für eine Hexadezimale Ziffer steht. Die Hexadezimalzahl die sich ergibt muss dann ein Unicode Zeichen benennen. Also z.B. "\u20ac" um das Euro Zeichen anzufordern. Welche Zeichen tatsächlich möglich sind hängt aber von der Implementierung ab. Es ist also nicht garantiert, dass du tatsächlich deine Zeichen bekommst. Dazu müsstest die entsprechende Dokumentation des Compilers befragen.

    Es ist grundsätzlich auch möglich die Zeichen direkt in die Quelldatei zu schreiben. Das Resultat ist aber grundsätzlich genauso Implementierungsspezifisch.

    Drittens kannst du in Character- und String-Literalen auch noch einen Wert für ein Zeichen direkt als Escapesequenz angeben, in der Form \xhh z.B. Je nachdem wie du den Wert danach interpretierst kannst du damit natürlich auch bestimmte Zeichen eingeben.

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.09.2010
    Beiträge
    6
    Mir geht es im Moment hauptsächlich um Textausgaben und dabei um ä,ö,ü,ß oder z.B. cm³. In einem Beispiel wurde uns nebenbei (nicht als wesentlich) das Beispiel für die Ausgabe von ß , cout<<"\xe1"; genannt. In einem Tabellenbuch habe ich eine ASCII/Unicode Tabelle gefunden. Aber HEX e1 ist dort a` und ß wäre df (funktioniert bei einem Test aber nicht). Als Software verwenden wir Dev-C++ von Bloodshed. Ich hatte angenommen, das es eine mit jedem Compiler verwendbare Sonderzeichentabelle gibt. Sonst behelfe ich mir mit anderen Varianten.

    Danke

  4. #4
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Ich glaube das wichtigste ist, erstmal herauszufinden, welchen Zeichensatz die Konsole verwendet. Dann wäre es evtl. von Bedeutung, welche Version der Compiler hat. Dev-C++ verwendet ja Mingw, also im Prinzip GCC. Aber welche Version genau?

  5. #5
    Registrierter Benutzer
    Registriert seit
    10.09.2010
    Beiträge
    6

    Version

    Hallo,

    ich habe versucht die Version von mingw herauszufinden, aber die Info nicht gefunden. Alle Dateien die damit zusammenhängen(die ich so gefunden habe) sind am 29.01.2005 erstellt. Vielleicht ist in einer dieser vielen Dateien auch eine entsprechende Tabelle hinterlegt? Bin da aber leider noch nicht fündig geworden, werde es aber weiter versuchen. Mir fehlt da sicher noch viel Wissen und noch mehr Erfahrung. Evt. kann mir noch jemand den passenden Hinweis geben.

    Danke

  6. #6
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Sonst mach doch erstmal folgendes: Jag mal folgendes Programm durch den Compiler:
    -------------------------------------------------------------------------
    #include <iostream>
    #include <ostream>

    int main() {
    std::cout << "Eszett: \u00df; Kreuzprodukt: \U000000D7; Geteilt-Durch: \u00F7\n";
    }
    --------------------------------------------------------------------------

    Wenn du dann die korrekten Zeichen, also Eszett, das Kreuz und das Bruchzeichen (ein Punkt über und einer unter dem Bruchstrich) beim Ausführen das Programms siehst, dann funktionieren die Unicode-Escapesequenzen schon mal grundsätzlich. Dann arbeite erstmal weiter.

    Zu Dev-C++: Anscheinend hat es tatsächlich das letzte Mal Anfang 2005 eine neue Version gegeben. Das ist schade. Aber zumindest Mingw, den Compiler den Dev-C++ verwendet gibt es auch neuer, und müsste sich auch in neueren Versionen durch Dev-C++ benutzen lassen. Grundsätzlich würde ich auch raten, einen aktuellen Compiler zu benutzen.

  7. #7
    Registrierter Benutzer Avatar von roadracer
    Registriert seit
    16.02.2010
    Ort
    Wolfenbüttel
    Beiträge
    48
    An sich geht das alles mit wide characters. Siehe wchar.h. Du kannst entweder ganz auf wide characters umsteigen, was aber auch immer seine Tücken hat, oder dein cm³ einfach mit wputws() auszugeben. Guck mal hier: http://openbook.galileocomputing.de/...cc41a30921f364
    OpenSUSE 12.1 x86 KDE 4.7

    Alle Rechtschreibfehler unterliegen der GFDL und dürfen so oder in veränderter Form genutzt und weiter gegeben werden.

  8. #8
    Registrierter Benutzer
    Registriert seit
    10.09.2010
    Beiträge
    6

    Arrow Dev-C++

    Hallo,

    also
    cout << "Eszett: \u00df; Kreuzprodukt: \U000000D7; Geteilt-Durch: \u00F7\n";
    gibt bei mir nicht die entsprechenden Zeichen aus.
    Ich werde zuerst mal auf die Sonderzeichen für die Belegarbeit verzichten und danach werde ich sowieso auf einen anderen Editor und compiler wechseln. Dann muss ich mich auch sicher noch mit mehr Tiefen befassen, um einige kleine Programme zu schreiben.

    Danke für alle Hinweise und Hilfen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •