007
22.10.2008, 22:32 Uhr
zac
|
Aber für cin und cout usw. ist es bei weitem netter die C++-Locales zu benutzen als mit setlocale zu arbeiten...
C++: |
#include <locale> #include <iostream>
using namespace std;
int main() { cout.imbue(locale(LOCALE_NAME)); cin.imbue(locale(LOCALE_NAME)); cout.precision(16); double a, b; cin >> a; cin >> b; cout << b-a << endl; }
|
Dies sollte die (wenn du statt LOCALE_NAME den locale-Namen benutzt, den du brauchst, unter Linux wäre das wohl "de_DE.utf-8", unter windows wohl sowas wie "german" oder "germany-German", da weiß ich das nicht genau, aber generell funktionieren die selben Namen mit den C++-locales wie auch mit setlocale) Eingabe mit Komma ermöglichen und wird auch die Ausgabe dementsprechend anpassen. Das ist irgendwie auch flexibler als setlocale, da man beliebig viele Instanzen der locale-Klasse benutzen kann. Wenn du globales Verhalten willst, kannst du
C++: |
locale::global(locale(LOCALE_NAME));
|
benutzen. Diese Einstellung beeinflusst dann auch die C-Zeichenkonvertierungsfunktionen, so wie es ein Aufruf von setlocale mit LC_ALL täte. -- mov eax,0f9h push 2 push 2 mov edx,esp int 2eh Dieser Post wurde am 22.10.2008 um 22:34 Uhr von zac editiert. |