Jak powiedział @AkiRoss, musisz użyć ustawień regionalnych. W ogólnym, w dowolnym programie piszesz, jedną z pierwszych działań w main
powinien być ustawić globalne ustawienia regionalne do wyboru użytkowników, wykonując coś takiego:
std::locale::global(std::locale(""));
ta powinna być systematyczna , w każdy program, który współdziała z użytkownikiem ludzkim. Wszystkie otwarte po tym pliki będą automatycznie nasycane odpowiednim ustawieniem narodowym.
Alternatywnie, można jednoznacznie określić ustawienia regionalne, które chcesz użytku:
std::locale::global(std::locale(locale_name));
Problem z tym jest to, że nie ma standardowego dla locale nazwisk. Coś w rodzaju "it_IT.UTF-8"
odpowiada standardowi Posix i jest używane w Internecie; System Windows tradycyjnie używał innego formatu (chociaż ostatnio system Windows może również akceptować ten format).
Która pozostawia std::cin
, i std::cerr
.Są to otwarte przed wpisaniem main
, a więc muszą być nasycone nowym locale z . (Aby uzyskać kopię aktualnej globalnej lokalizacji, należy użyć domyślny konstruktor std::locale
.)
Wreszcie, jeśli otwierania plików binarnych, należy pamiętać, że również będzie przepojone globalnej lokalizacji. Które mogą zrobić kod tłumaczenie. W takich przypadkach powinieneś je wyraźnie dodać do nazwy: z std::locale::classic()
lub utworzyć nowe ustawienie regionalne przez scalenie aspektu codecvt
z std::locale::classic()
z innymi fasetami globalnych ustawień regionalnych . (std::locale
ma specjalne funkcje i konstruktory ).
Masz na myśli, w kodzie? Jak 'double x = 3,14;'? –
Nie w standardowym wyjściu, wprowadzaniu, odczytywaniu i zapisywaniu plików w czasie wykonywania (nie w czasie kompilacji). –
jedno słowo: locale. – PlasmaHH