Задать вопрос
@askogorev

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

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

setlocale(LC_ALL, "");
auto l = setlocale(LC_ALL, ""); // тут "C"
  • Вопрос задан
  • 3298 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы