031
15.09.2011, 01:48 Uhr
0xdeadbeef
Gott (Operator)
|
Da denken sich die Leute ein flexibles Locale-System mit Facets und allem aus, und niemand setzt sich damit auseinander... Ich bin mir bewusst, dass Locales eine der seltener benutzen Ecken des C++-Standards sind, aber für genau solche Zwecke ist der Kram ja gedacht, und wirklich schwierig ist das nun auch nicht. Etwa so:
C++: |
#include <iostream> #include <locale> #include <numeric>
class comma_numpunct : public std::numpunct<char> { public: explicit comma_numpunct(std::size_t refs = 0) : std::numpunct<char>(refs) { }
protected: virtual char_type do_decimal_point() const { return ','; } };
int main() { std::locale loc(std::locale(), new comma_numpunct()); std::cin .imbue(loc); std::cout.imbue(loc);
double d;
std::cin >> d; std::cout << d * 2 << std::endl; }
|
Ergebnis:
Ich muss allerdings dazu sagen, dass ich für ernsthafte Parserei inzwischen fast ausschließlich Boost.Spirit benutze - schon aus Performancegründen. Ich habe keine Ahnung, wie die den Kram derart blitzschnell gekriegt haben. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 15.09.2011 um 01:55 Uhr von 0xdeadbeef editiert. |