Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
vechestva
-28 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 47
#1

Получить текущий locale. (category, * locale) - C++

24.09.2012, 18:32. Просмотров 1233. Ответов 9
Метки нет (Все метки)

Привет!
Если стоит:
C++
1
setlocale (LC_ALL, "Ukrainian");
как я могу теперь получить его аргументы?
То-есть, int category и const char * locale?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Получить текущий locale. (category, * locale) (C++):

Как кинуть исключение std::locale::global(std::locale(""); - C++
Добрый день. Знаю, что на С можно так: if (!setlocale(LC_ALL, "")) { perror("Couldn't set locale"); exit(EXIT_FAILURE); }...

Объясните, что означает wcout.imbue( locale( "rus_rus.866" ) ); и wcin.imbue( locale( "rus_rus.866" ) ); ? - C++
Непонятно особенно locale( "rus_rus.866" ).

локаль(locale) - C++
int main() { std::locale::global(std::locale("rus")); //std::cout.imbue(std::locale("rus")); std::cout << "привет!"; ...

Установка locale (той которой от с++) - C++
Как это правильно сделать? std::locale::global(std::locale("ru_RU.cp1251")); так получаю эксепшн. Компилятор gcc. Мне это необходимо...

Locale - не верное отображение символа - разделителя тысяч для чисел - C++
Объясните в чём может быть проблема символ - разделитель тысячной части в русской и украинской локали в консоли выглядит вместо пробела...

Как получить текущий адрес стека? - C++
Есть функция, предположим, WinMain. Я хочу вывести в лог указатель стека. Те высокоуровневого, а того, который push ax. Как это сделать?...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Петррр
5949 / 3386 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
24.09.2012, 19:07 #2
int category - никак не получить, это лишь говорит, что устанавливаете локализацию на все сразу.
http://en.cppreference.com/w/cpp/locale/locale/locale
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.09.2012, 19:14 #3
vechestva, setlocale возвращает char*. Т.е. то, что поставили то и возвращает. http://www.cplusplus.com/reference/c...ale/setlocale/ Чтобы получить текущую локаль достаточно использовать
C
1
char* current = setlocale(LC_ALL, NULL);
vechestva
-28 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 47
24.09.2012, 20:54  [ТС] #4
Цитата Сообщение от ForEveR Посмотреть сообщение
vechestva, setlocale возвращает char*. Т.е. то, что поставили то и возвращает. http://www.cplusplus.com/reference/c...ale/setlocale/ Чтобы получить текущую локаль достаточно использовать
C
1
char* current = setlocale(LC_ALL, NULL);
допустим я хочу получить текущий LOCAL не используя setlocale?

Добавлено через 1 минуту
то-есть, если в программе ещё не использовался setlocale?
Петррр
5949 / 3386 / 337
Регистрация: 28.10.2010
Сообщений: 5,926
24.09.2012, 20:57 #5
По моей ссылке смотрите. Конструктор по умолчанию создает локализацию на основе текущей.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.09.2012, 21:00 #6
Петррр, Это ж С++.
vechestva, Все равно использовалась или нет. Вернется дефолтная локаль, если не использовалось.
vechestva
-28 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 47
24.09.2012, 21:07  [ТС] #7
Цитата Сообщение от Петррр Посмотреть сообщение
По моей ссылке смотрите. Конструктор по умолчанию создает локализацию на основе текущей.
C++
1
2
3
4
5
6
7
8
int main()
{
    std::string locale = setlocale (LC_ALL, "Ukrainian");
    cout << "Locale: " << loacle << endl;
 
    cin.get();
    return 0;
}
не похоже. Текущая была не Ukrainian.Ukraine.1251

Добавлено через 1 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
vechestva, Все равно использовалась или нет. Вернется дефолтная локаль, если не использовалось.
не вернулась же
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.09.2012, 21:09 #8
vechestva,
C
1
setlocale(LC_ALL, NULL);
Я это кому писал? http://liveworkspace.org/code/240e5e...33108e37edb7a1
А если setlocale еще не использовалась - локаль будет в любом случае C.
vechestva
-28 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 47
24.09.2012, 22:25  [ТС] #9
Цитата Сообщение от ForEveR Посмотреть сообщение
vechestva,
C
1
setlocale(LC_ALL, NULL);
Я это кому писал? http://liveworkspace.org/code/240e5e...33108e37edb7a1
А если setlocale еще не использовалась - локаль будет в любом случае C.
Получается setlocale(LC_ALL, NULL) это единственная альтернатива не существующему в стандарте getlocale()?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
24.09.2012, 22:48 #10
vechestva, Ага.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 22:48
Привет! Вот еще темы с ответами:

GlassFish locale - Java EE
Всем доброго времени суток Пишу тестовое задание - смена локали англ / немецкая работет норм пытаюсь установить укр тупо не...

Ошибка при использовании Locale - Delphi БД
При компиляции программы выбивает такую вот ошибку - Unit5.pas(96): Undeclared identifier: 'TLocateOptions' Как исправить? где нужно...

Где можно найти утилиту locale? - Linux
Потихоньку изучаю linux на виртуалке И вот немного озадачился, многие команды, например ls, pwd и т. д. в виде утилит расположены в папке...

Чем можно заменить Locale.GetText? - C#
Чем можно заменить Locale.GetText в Visual Studio? Console.ReadLine? Добавлено через 20 минут вот такую строку надо перевести... ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.09.2012, 22:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru