portabilität
-
hi
ich habe in den faqs was interessantes gelesen und zwar wie man umlaute einfacher definiert. mit dem backspacezeichen, super idee, das macht es echt einfach. na ja, mein problem ist das ich ein konsolenprogramm für windows erstellt habe und ich da die sonderzeichen für die eingabeaufforderung nutzen muss um die umlaute (ä, ü, ö) darzustellen.
das selbe programm unter linux funktioniert zwar, doch werden die umlaute nicht als solche dargestellt sondern als (\x81) zb., für linux kann ich direkt ä, ü, ö eingeben.
wie mache ich so ein programm portabel ohne die umlautdefinitionen immer ändern zu müssen?
dankeps: ich muss aber auch sagen das ich unterschiedliche kompilerversionen nutze.
windows: dev-cpp 4.9.9.0 , hat den mingw compiler version 3.3.1
linux: kdevelop mit gcc -vgcc-Version 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)
vielleicht hängt es ja auch damit zusammen.
-
Nein das hängt damit zusammen, dass die Win Console kein ANSII nutzt sondern OEM, und unter Linux scheint ANSII genutzt zu werden. Du kannst mal unter Windows mit SetConsoleOutputCP versuchen ANSII einzustellen aber es gibt auch eine viel einfachere porablere Methode : anstatt "ä" schreibt man einfach "ae". Hat auch den Vorteil, dass niemand einem vorwerfen kann die ß Regel nicht zu kennen
.
-
In der Windows-Konsole kann man damit Umlaute und ß ausgeben:
#include <iostream> using namespace std; int main() { cout << char(132) << char(148) << char(129) << char(225); }
Was macht das unter Linux?
-
~% ./a.out „”á~%
naja, das forum stellts auch nochmal anders da
-
bei mir sieht das so aus.
á
mehr war nicht drin, ich muss noch weiter testen.
-
also es ist wegen ansi, getestet und für richtig befunden
#include <iostream> using namespace std; int main() { cout << char(228) << char(246) << char(252) << char(223) << endl; }
unter linux geht es so, also wenn man nicht direkt ä, ö, ü, ß eingibt.
infos dazu
http://www.torsten-horn.de/techdocs/ascii.htmhier findet man ansi und dos zeichensatz.
immer diese extrawürste, mit computern muss immer alles kompliziert gemacht werden.
-
... Unicode ...
Kann zwar die Windows Konsole noch nicht, aber darauf kann man eigentlich bald keine Rücksicht mehr nehmen.
-
dein wort in -wem auch immer- ohr.
abwarten. warum sollte man auch portabel sein wenn man doch die macht hat.
nun gut.
-
Das Problem liegt an der entsprechenden Terminal Emulation, wenn man da irgend welche Extended-ASCII, ISO 8859-1 etc. Zeichen direkt angibt, dann sieht das eben bei jemand der UTF-8 oä. benutzt ziemlich eingeschränkt aus.
Für so etas gibt es ja eigentlich locales im C++ Standard, wie man das aber konkret einsetzt, weiss ich nicht.