@askogorev

Как получить локаль системы из std::setlocale?

Добрый день, как можно получить текущую локаль системы?
Хочется получить что-то вроде Russian_Russia.UTF-8, однако получается получить только classic "C" locale

setlocale(LC_ALL, "");
auto l = setlocale(LC_ALL, ""); // тут "C"
  • Вопрос задан
  • 3247 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xandox
1) если используешь c++ то используй лучше std::locale
2) читай внимательно man - там написано, что если аргумент locale (он второй) равен NULL, то возвращается текущая локаль
3) по умолчанию, вполне возможно, что будет установлена сишная локаль, по этому сначала установи какую нужно, а потом получай
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main() {
    printf("%s\n", setlocale(LC_ALL, NULL));
    printf("%s\n", setlocale(LC_ALL, "ru_RU.UTF-8"));
    printf("%s\n", setlocale(LC_ALL, NULL));
    return 0;
}

➜  /tmp  gcc test.c
➜  /tmp  ./a.out
C
ru_RU.UTF-8
ru_RU.UTF-8
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы