Setlocale c что это значит

Устанавливает или извлекает языковой стандарт времени выполнения.

Синтаксис

Параметры

category
Категория, на которую влияет языковой стандарт.

locale
Указатель языкового стандарта.

Возвращаемое значение

задает все категории, возвращая только строку

Комментарии

_wsetlocale — это версия с расширенными символами для setlocale ; аргумент locale и возвращаемое значение _wsetlocale являются строками с расширенными символами. Поведение _wsetlocale и setlocale идентично в противном случае.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это, см. раздел глобальное состояние в CRT.

Универсальное текстовое сопоставление функций

TCHAR.H ассемблер_UNICODE & _MBCS не определено_MBCS определяется_UNICODE определяется
_tsetlocalesetlocalesetlocale_wsetlocale

Аргумент category указывает части информации о языковом стандарте программы, которые подвергаются влиянию. Макросы, используемые для category и части программы, на которые они оказывают, указаны ниже.

При запуске программы выполняется эквивалент следующего оператора:

setlocale( LC_ALL, «C» );

setlocale( LC_ALL, «.OCP» );

setlocale( LC_ALL, «.ACP» );

setlocale( LC_ALL, » _ » );

Задает языковой стандарт для языка, страны или региона, а также кодовую страницу, определяемую строками, и. Можно использовать различные сочетания языка, страны или региона и кодовой страницы. Например, этот вызов устанавливает языковой стандарт «французский (Канада)» с кодовой страницей 1252.

setlocale( LC_ALL, «French_Canada.1252» );

Этот вызов устанавливает языковой стандарт «французский (Канада)» с кодовой страницей по умолчанию ANSI.

setlocale( LC_ALL, «French_Canada.ACP» );

Этот вызов устанавливает языковой стандарт «французский (Канада)» с кодовой страницей по умолчанию OEM.

setlocale( LC_ALL, «French_Canada.OCP» );

setlocale( LC_ALL, «en-US» );

setlocale( LC_ALL, «English» );

setlocale( LC_ALL, «English_United States.1252» );

Рекомендуется использовать первую форму для обеспечения производительности и простоты обслуживания.

Эта категория должна быть LC_ALL или LC_CTYPE для реализации изменения кодовой страницы. Например, если страна или регион по умолчанию и язык операционной системы узла являются » United States » и » English «, следующие два вызова setlocale функционально эквивалентны:

setlocale( LC_ALL, «.1252» );

setlocale( LC_ALL, «English_United States.1252»);

Функция _configthreadlocale используется для управления setlocale тем, влияет ли на языковой стандарт для всех потоков в программе или только на языковой стандарт вызывающего потока.

Поддержка UTF-8

Строка для указания режима UTF-8:

В следующих примерах показано, как указать строку UTF-8:

После вызова setlocale(LC_ALL, «.UTF8») можно передать «😊» в, mbtowcs и он будет правильно преобразован в wchar_t строку, в то время как ранее для этого не был доступен параметр языкового стандарта.

режим UTF-8 также включается для функций с историческим переводом char строк с помощью Windows кодовой страницы ANSI по умолчанию (ACP). Например, вызов _mkdir(«😊») при использовании кодовой страницы UTF-8 правильно создаст каталог с этим символом эмодзи в качестве имени папки, а не требует, чтобы ACP был изменен на UTF-8 перед запуском программы. Аналогичным образом, вызов _getcwd() в этой папке вернет строку в кодировке UTF-8. Для обеспечения совместимости ACP по-прежнему используется, если кодовая страница языка C не имеет значение UTF-8.

чтобы использовать эту функцию в ос до Windows 10, необходимо использовать локальное развертывание приложения или ссылку статически с помощью версии 1803 (10.0.17134.0) Windows SDK или более поздней. для Windows 10 операционных систем, предшествовавших 1803 (10.0.17134.0), поддерживается только статическая компоновка.

Требования

Дополнительные сведения о совместимости см. в разделе Compatibility.

Источник

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Как включить русский язык в Си

На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.

Например, при запуске вот этой программы:

В консоли будет отображено следующее:

Setlocale c что это значит. 2015 02 15 13 27 42 Skrinshot e%60krana. Setlocale c что это значит фото. Setlocale c что это значит-2015 02 15 13 27 42 Skrinshot e%60krana. картинка Setlocale c что это значит. картинка 2015 02 15 13 27 42 Skrinshot e%60krana

Всё дело в том, что мы не подключили русскую локализацию.

Исправить эту ошибку очень легко!

Для начала надо добавить следующую библиотеку:

Она отвечает за локализацию.

А затем нам надо просто написать в начале тела кода вот эту строку:

Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.

“Rus”, как легко догадаться говорит о том, что локализация произойдёт на русский язык.

Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:

Setlocale c что это значит. 2015 02 15 13 41 57 Skrinshot e%60krana. Setlocale c что это значит фото. Setlocale c что это значит-2015 02 15 13 41 57 Skrinshot e%60krana. картинка Setlocale c что это значит. картинка 2015 02 15 13 41 57 Skrinshot e%60krana

Поделиться в соц. сетях:

15 комментария(ев) к статье “ Как включить русский язык в Си ”

Что именно? Какая ошибка?

Можете попробовать такой код:

#include
#include
#include

int main()
<
setlocale(LC_ALL, “Rus”);
printf(“Всем привет! Как дела?”);
getch(); //В Visual Studio _getch();
return 0;
>

Этот вариант работает, но он не включает русский язык в стандартном потоке ошибок.

Вместо одних каракулей появились другие. Но никаких ошибок не выдает.

Здравствуйте, Евгений. Существует ещё один способ включения русского языка в Си. Попробуйте использовать следующий код:

#include
#include
#include

int main()
<
SetConsoleCP(1251); //установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251 в поток вывода
printf(“Всем привет! Как дела?”);
_getch();
return 0;
>

Здравствуйте, использовала такой метод как в статье.
Все работает при выводе текста функцией printf.
Но, когда я считываю слово функцией scanf, а потом вывожу его функцией printf появляются снова непонятные символы.
Подскажите пожалуйста как это можно исправить.

Здравствуйте! Чуть выше в комментариях приводятся ещё два способа, как включить русский язык в Си. Попробуйте их, должно сработать.

У меня та же проблема, с printf всё работает, но вот если ввести при scanf, то в выводе printf будут кракозябры

Попробуйте способы, указанные в комментариях выше. Один из них точно сработает.

Спасибо за инфу! Все работает.

Всё работает! Спасибо большое!

Правильно “Ru”, а не “Rus”.
setlocale(LC_ALL, “Ru”);

у меня получилось так:

#include
#include
#include

void main()
<
setlocale(LC_ALL, “Rus”);
wprintf(L”Спасибо”);
>

Если кто-то пишет в NotePad++ или чём-то подобном, не забудьте поменять кодировку самого файла с UTF-8 на, например, Windows-1251.
Спасибо за статью.

Источник

Настройка локали

При изменении регистра русских букв может возникнуть проблема. Чтобы ее избежать, необходимо правильно настроить локаль (совокупность локальных настроек системы).

Настройка локали в языке C

В первом параметре указывается категория в виде числа от 0 до 5 или соответствующий числу макрос:

Чтобы использовать другую кодировку нужно указать ее название после точки, например, «.1251» или «Russian_Russia.1251» :

Вместо названия можно указать пустую строку. В этом случае будет использоваться локаль, настроенная в системе:

В качестве значения функция возвращает указатель на строку с названием локали, соответствующей заданной категории, или нулевой указатель в случае ошибки. Если во втором параметре передан нулевой указатель, то функция возвращает указатель на строку с названием текущей локали:

После настройки локали многие функции будут работать не так как раньше. Например, от настроек локали зависит вывод функции printf() :

Некоторые функции позволяют указать локаль в качестве параметра, например, функция _printf_l() :

Пример настройки локали и вывода текущего названия локали приведен в листинге 7.1.

Листинг 7.1. Настройка локали

Функция localeconv() позволяет получить информацию о способе форматирования вещественных чисел и денежных сумм для текущей локали. Прототип функции:

Объявление структуры lconv выглядит следующим образом:

В VC++ доступны также следующие поля структуры lconv :

Настройка локали в языке C++

Второй и третий конструкторы позволяют задать название локали. Вместо названия можно указать пустую строку. В этом случае будет использоваться локаль, настроенная в системе. Пример:

Четвертый конструктор создает копию объекта:

Пятый и шестой конструкторы в параметре cat позволяют указать следующие флаги (или их комбинацию через побитовый оператор | ):

Пример создания объекта класса locale для всех категорий:

Пример сравнения локалей:

Setlocale c что это значит. cppmingw. Setlocale c что это значит фото. Setlocale c что это значит-cppmingw. картинка Setlocale c что это значит. картинка cppmingw
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Источник

Setlocale c что это значит

char *setlocale(int category, const char *locale);

ОПИСАНИЕ

Если locale не равно NULL, то текущая локаль программы изменяется согласно переданным аргументам. Аргументом category определяется какую часть текущей локали программы нужно изменить.

КатегорияОпределяет
LC_ALLЛокаль целиком
LC_ADDRESSФорматирование адресов и
элементов, относящихся к географии (*)
LC_COLLATEСортировка строк
LC_CTYPEКлассы символов
LC_IDENTIFICATIONМетаданные, описывающие локаль (*)
LC_MEASUREMENTНастройки, относящиеся к единицам измерения
(метрические или системы мер США) (*)
LC_MESSAGESЛокализированные сообщения на родном языке
LC_MONETARYФорматирование значений денежных единиц
LC_NAMEФорматирование приветствий людей (*)
LC_NUMERICФорматирование неденежных числовых значений
LC_PAPERНастройки стандартных размеров бумаги (*)
LC_TELEPHONEФорматы, используемые в телефонных службах (*)
LC_TIMEФорматирование значений дат и времени

Категории, помеченные в таблице звёздочкой, являются расширениями GNU. Дополнительную информацию об этих категориях локали смотрите в locale(7).

Аргумент locale — это указатель на строку символов, содержащую требуемую настройку category. Эта строка может быть понятной константой «C» или «da_DK» (смотрите ниже), или неясной строкой, которую вернул другой вызов setlocale().

Если locale — пустая строка, «», то любая часть локали, которую требуется изменить, будет задана исходя из переменных окружения. Как это происходит — зависит от реализации. В glibc, во-первых (независимо от category), просматривается переменная окружения LC_ALL, затем переменная окружения с именем как у категории (смотрите таблицу выше), и в конце учитывается переменная окружения LANG. Используется первая найденная переменная окружения. Если её значение некорректно определяет локаль, то локаль не изменяется и setlocale() возвращает NULL.

Локали «C» или «POSIX» являются переносимыми локалями; они существуют во всех соответствующих системах.

Если locale равно NULL, то только возвращается текущая локаль и ничего не меняется.

При запуске основной программы по умолчанию выбирается переносимая локаль «C». Программу можно сделать переносимой для всех локалей вызвав

после инициализации программы, используя информацию об установках локали, полученную из вызова localeconv(3), используя многобайтные или широкосимвольные функции при обработке текста, если MB_CUR_MAX > 1 и используя strcoll(3), wcscoll(3) или strxfrm(3), wcsxfrm(3) для сравнения строк.

Источник

Sets or retrieves the run-time locale.

Syntax

Parameters

category
Category affected by locale.

locale
Locale specifier.

Return value

For example, the call

sets all categories, returning only the string

Remarks

_wsetlocale is a wide-character version of setlocale ; the locale argument and return value of _wsetlocale are wide-character strings. _wsetlocale and setlocale behave identically otherwise.

By default, this function’s global state is scoped to the application. To change this, see Global state in the CRT.

Generic-Text Routine Mappings

TCHAR.H routine_UNICODE & _MBCS not defined_MBCS defined_UNICODE defined
_tsetlocalesetlocalesetlocale_wsetlocale

The category argument specifies the parts of a program’s locale information that are affected. The macros used for category and the parts of the program they affect are as follows:

The locale argument is a pointer to a string that specifies the locale. For information about the format of the locale argument, see Locale Names, Languages, and Country/Region Strings. If locale points to an empty string, the locale is the implementation-defined native environment. A value of C specifies the minimal ANSI conforming environment for C translation. The C locale assumes that all char data types are 1 byte and that their value is always less than 256.

At program startup, the equivalent of the following statement is executed:

setlocale( LC_ALL, «C» );

The locale argument can take a locale name, a language string, a language string and country/region code, a code page, or a language string, country/region code, and code page. The set of available locale names, languages, country/region codes, and code pages includes all those supported by the Windows NLS API. The set of locale names supported by setlocale are described in Locale Names, Languages, and Country/Region Strings. The set of language and country/region strings supported by setlocale are listed in Language Strings and Country/Region Strings. We recommend the locale name form for performance and for maintainability of locale strings embedded in code or serialized to storage. The locale name strings are less likely to be changed by an operating system update than the language and country/region name form.

which is the string that’s associated with the LC_ALL category.

The following examples pertain to the LC_ALL category. Either of the strings «.OCP» and «.ACP» can be used instead of a code page number to specify use of the user-default OEM code page and user-default ANSI code page for that locale name, respectively.

setlocale( LC_ALL, «.OCP» );

setlocale( LC_ALL, «.ACP» );

setlocale( LC_ALL, » _ » );

setlocale( LC_ALL, «French_Canada.1252» );

This call sets the locale to French Canada with the default ANSI code page:

setlocale( LC_ALL, «French_Canada.ACP» );

This call sets the locale to French Canada with the default OEM code page:

setlocale( LC_ALL, «French_Canada.OCP» );

setlocale( LC_ALL, «en-US» );

setlocale( LC_ALL, «English» );

setlocale( LC_ALL, «English_United States.1252» );

We recommend the first form for performance and maintainability.

The category must be either LC_ALL or LC_CTYPE to effect a change of code page. For example, if the default country/region and language of the host operating system are » United States » and » English «, the following two calls to setlocale are functionally equivalent:

setlocale( LC_ALL, «.1252» );

setlocale( LC_ALL, «English_United States.1252»);

For more information, see the setlocale pragma directive in the C/C++ Preprocessor Reference.

The function _configthreadlocale is used to control whether setlocale affects the locale of all threads in a program or only the locale of the calling thread.

UTF-8 Support

The string to specify UTF-8 mode is:

The following examples show how to specify the UTF-8 string:

UTF-8 mode is also enabled for functions that have historically translated char strings using the default Windows ANSI code page (ACP). For example, calling _mkdir(«рџ˜Љ») while using a UTF-8 code page will correctly produce a directory with that emoji as the folder name, instead of requiring the ACP to be changed to UTF-8 before running your program. Likewise, calling _getcwd() in that folder will return a UTF-8 encoded string. For compatibility, the ACP is still used if the C locale code page is not set to UTF-8.

To use this feature on an OS prior to Windows 10, you must use app-local deployment or link statically using version 1803 (10.0.17134.0) of the Windows SDK or later. For Windows 10 operating systems prior to 1803 (10.0.17134.0), only static linking is supported.

Requirements

For more compatibility information, see Compatibility.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *