PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wout oder wcout in C++



lokicall
13-03-2007, 17:10
Hallo,

ich lese mich grad in C++ ein( Buch Jürgen Wolf C++ von A bis Z).
Auf Seite 51 steht, das man für die Ausgabe von Unicode Streams wout nutzen muss. Leider gibt er mir nur Fehlermeldungen zurück, weil er wout nicht kennt. Wenn ich wout durch wcout ersetze geht das kompilieren zwar aber es kommt kein Sonderzeichen. Ich habe dies bisher unter Linux getestet.


#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
wchar_t omega = L' ';
wcout << omega << endl;
return EXIT_SUCCESS;
}

Wie kann ich denn testen, ob er das richtige Zeichen ausgibt?
Funktioniert der Code bei euch?

PS: laut Buch soll das ausgegebene Zeichen ein griech. omega sein.

Boron
13-03-2007, 17:20
Das hier habe ich mal aus dem iostream Header rauskopiert:
#ifdef _GLIBCXX_USE_WCHAR_T
extern wistream wcin; ///< Linked to standard input
extern wostream wcout; ///< Linked to standard output
extern wostream wcerr; ///< Linked to standard error (unbuffered)
extern wostream wclog; ///< Linked to standard error (buffered)
#endifWie du siehst gibt es kein wout, sondern höchstens ein wcout.
Und das ist auch nur benutzbar, wenn _GLIBCXX_USE_WCHAR_T definiert wurde.

Wo das jetzt herkommt weiß ich nicht. Vielleicht muss es dem Compiler per -D_GLIBCXX_USE_WCHAR_T von Hand übergeben werden?

anda_skoa
14-03-2007, 16:38
Wie checkst du die Ausgabe?

Umgeleitet in eine Datei und dann mit entsprechenden Encoding-Hinweis in einem Editor geöffnet?

Oder mit einem UTF-16 Locale im Terminal? (ich glaube wchar ist zwei Bytes pro Zeichen, alsoUTF-16)

Ciao,
_

lokicall
16-03-2007, 17:50
Das Buch wird immer lustiger. Nun behauptet der Autor, wenn man einen Zeiger inkrementiert, also *p++, erhöht man den Inhalt auf dem der Zeiger zeigt um eins, nicht zu verwechseln mit p++. Dachte immer das ++ eine höhere Priorität hat als der Zeiger Operator und damit ist *p++ == p++ oder?

peschmae
16-03-2007, 20:42
Dachte immer das ++ eine höhere Priorität hat als der Zeiger Operator und damit ist *p++ == p++ oder?

Richtig. Aber du willst doch nicht im ernst behaupten du hättest die auswendig gelernt?

MfG Peschmä, der immer klammert - schon nur damit auch andere den Code verstehen können

CCCoder
20-03-2007, 12:55
*p++
Zuerst wird der Wert auf den der Zeiger zeigt zurückgegeben und danach der Zeiger selbst erhöht.

peschmae
20-03-2007, 16:15
Öh, ja, mein Fehler. Merkwürdig, dass ich das falsch erzählt hab, das schreibe ich nämlich selber noch ab und zu. ;)

MfG Peschmä