Главная » Правописание слов » Как пишется setlocale в с

Слово Как пишется setlocale в с - однокоренные слова и морфемный разбор слова (приставка, корень, суффикс, окончание):


Морфемный разбор слова:

Однокоренные слова к слову:

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
_tsetlocale setlocale setlocale _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.

Источник

Языковой стандарт

Языковой стандарт — это настройки страны/региона и языковые настройки, с помощью которых можно настраивать программы. К числу категорий, зависящих от языкового стандарта, относится отображение форматов дат и денежных значений. Дополнительные сведения см. в разделе Категории языковых стандартов.

Используйте функцию setlocale для изменения или запроса некоторой или всей информации о языковом стандарте текущей программы или потока при использовании функций без суффикса _l. Функции с суффиксом _l используют переданные им параметры языкового стандарта только во время выполнения этой конкретной функции. Чтобы создать языковой стандарт для использования в функции с суффиксом _l, используйте функцию _create_locale. Для освобождения этого языкового стандарта используйте функцию _free_locale. Чтобы получить текущий языковой стандарт, можно использовать функцию _get_current_locale.

Используйте функцию _configthreadlocale для управления тем, имеет ли каждый поток собственный языковой стандарт или все потоки в программе используют один и тот же языковой стандарт. Дополнительные сведения см. в разделе Языковые стандарты и кодовые страницы.

Доступны более безопасные версии этих функций, в следующей таблице они отмечены суффиксом _s (secure, безопасная). Дополнительные сведения см. в разделе Функции безопасности в CRT.

Зависимые от языковых стандартов подпрограммы

Подпрограмма Использовать Зависимость настройки категории setlocale
atof, _atof_l, _wtof, _wtof_l Преобразовать символ в значение с плавающей запятой LC_NUMERIC
atoi, _atoi_l, _wtoi, _wtoi_l Преобразовать символ в целочисленное значение LC_NUMERIC
_atoi64, _atoi64_l, _wtoi64, _wtoi64_l Преобразовать символ в 64-разрядное целочисленное значение LC_NUMERIC
atol, _atol_l, _wtol, _wtol_l Преобразовать символ в значение long LC_NUMERIC
_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l Преобразовать символ в значение double-long LC_NUMERIC
Подпрограммы is Проверить данное целое число на указанное условие. LC_CTYPE
isleadbyte, _isleadbyte_l Проверить на старший байт LC_CTYPE
localeconv Прочитать соответствующие значения для форматирования числовых величин LC_MONETARY, LC_NUMERIC
MB_CUR_MAX Максимальная длина в байтах любого многобайтового символа текущего языкового стандарта (макрос, определенный в STDLIB.H) LC_CTYPE
_mbccpy, _mbccpy_l,_mbccpy_s, _mbccpy_s_l Скопировать один многобайтовый символ LC_CTYPE
_mbclen, mblen, _mblen_l Проверить и вернуть количество байтов в многобайтовом символе LC_CTYPE
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l Для строк многобайтовой кодировки: проверить каждый символ в строке; вернуть длину строки LC_CTYPE
mbstowcs, _mbstowcs_l,mbstowcs_s, _mbstowcs_s_l Преобразовать последовательность многобайтовых символов в соответствующую последовательность расширенных символов. LC_CTYPE
mbtowc, _mbtowc_l Преобразовать многобайтовый символ в соответствующий расширенный символ. LC_CTYPE
Функции printf Записать форматированные выходные данные LC_NUMERIC (определяет вывод символа системы счисления)
Функции scanf Прочитать форматированные входные данные LC_NUMERIC (определяет распознавание символа системы счисления)
setlocale, _wsetlocale Выбрать языковой стандарт для программы Неприменимо
strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l Сравнить символы двух строк LC_COLLATE
_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l Сравнить две строки без учета регистра LC_CTYPE
_stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, _mbsicoll_l Сравнить символы двух строк (регистр не учитывается) LC_COLLATE
_strncoll, _wcsncoll, _mbsncoll, _strncoll_l, _wcsncoll_l, _mbsncoll_l Сравнить первые n символов двух строк LC_COLLATE
_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l Сравнить символы двух строк без учета регистра. LC_CTYPE
_strnicoll, _wcsnicoll, _mbsnicoll, _strnicoll_l, _wcsnicoll_l, _mbsnicoll_l Сравнить первые n символов двух строк (регистр не учитывается) LC_COLLATE
strftime, wcsftime, _strftime_l, _wcsftime_l Форматировать значение даты и времени в соответствии с предоставленным аргументом format LC_TIME
_strlwr, _wcslwr, _mbslwr, _strlwr_l, _wcslwr_l, _mbslwr_l,_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l Преобразовать «на месте» каждую прописную букву в указанной строке в нижний регистр LC_CTYPE
strtod, _strtod_l, wcstod, _wcstod_l Преобразовать строку символов в значение double LC_NUMERIC (определяет распознавание символа системы счисления)
strtol, wcstol, _strtol_l, _wcstol_l Преобразовать строку символов в значение long LC_NUMERIC (определяет распознавание символа системы счисления)
strtoul, _strtoul_l, wcstoul, _wcstoul_l Преобразовать строку символов в значение unsigned long LC_NUMERIC (определяет распознавание символа системы счисления)
_strupr, _strupr_l, _mbsupr, _mbsupr_l, _wcsupr_l, _wcsupr,_strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l Преобразовать «на месте» каждую букву в нижнем регистре в строке в верхний регистр LC_CTYPE
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l Преобразовать строку в упорядоченную форму в соответствии с языковым стандартом LC_COLLATE
tolower, _tolower, towlower, _tolower_l, _towlower_l,_mbctolower, _mbctolower_l, _mbctoupper, _mbctoupper_l Преобразовать указанный символ в соответствующий символ нижнего регистра LC_CTYPE
toupper, _toupper, towupper, _toupper_l, _towupper_l,_mbctolower, _mbctolower_l, _mbctoupper, _mbctoupper_l Преобразовать указанный символ в соответствующую прописную букву LC_CTYPE
wcstombs, _wcstombs_l,wcstombs_s, _wcstombs_s_l Преобразовать последовательность расширенных символов в соответствующую последовательность многобайтовых символов LC_CTYPE
wctomb, _wctomb_l,wctomb_s, _wctomb_s_l Преобразовать расширенный символ в соответствующий многобайтовый символ LC_CTYPE

Для многобайтовых подпрограмм многобайтовая кодовая страница должна быть эквивалента языковому стандарту, установленному с помощью функции setlocale. Функция _setmbcp с аргументом _MB_CP_LOCALE устанавливает многобайтовую кодовую страницу, совпадающую с кодовой страницей setlocale.

Источник

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

Синтаксис

Параметры

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

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

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

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

Комментарии

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

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

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

TCHAR.H ассемблер _UNICODE & _MBCS не определено _MBCS определяется _UNICODE определяется
_tsetlocale setlocale setlocale _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.

Источник

std:: setlocale

Compiler support
Freestanding and hosted
Language
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Diagnostics library
General utilities library
Strings library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Numerics library
Localizations library
Input/output library
Filesystem library (C++17)
Regular expressions library (C++11)
Atomic operations library (C++11)
Thread support library (C++11)
Technical specifications
Symbols index
External libraries

Contents

[edit] Parameters

[edit] Return value

Pointer to a narrow null-terminated string identifying the C locale after applying the changes, if any, or null pointer on failure.

A copy of the returned string along with the category used in this call to std::setlocale may be used later in the program to restore the locale back to the state at the end of this call.

[edit] Notes

POSIX also defines a locale named «POSIX», which is always accessible and is exactly equivalent to the default minimal «C» locale.

POSIX also specifies that the returned pointer, not just the contents of the pointed-to string, may be invalidated by subsequent calls to setlocale.

Источник

Русские символы(буквы) при вводе/выводе в консоль на C++

При изучении языка C++ и программировании под Windows довольно часто возникают вопросы по поводу отображения русских букв в консоли. Вывод и ввод русских букв сопровождается выводом и вводом каких-то кракозябр или иероглифов. В интернете можно найти довольно много советов, но большая часть советов, которые мне попались, не помогали в решении проблемы.

Возникла проблема с отображением русских букв

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

На языке C++ программирую под ОС Linux, использую компилятор GCC. С проблемой неправильного отображения русских букв я не сталкивался. В момент написания статьи я нахожусь далеко от своего компьютера, могу довольствоваться лишь скромненьким ноутбуком с установленной ОС Windows Seven. Захотелось покодить и я установил на него интегрированную среду разработки Dev-C++ 5.10(использует компилятор TDM-GCC 4.8.1 на базе GCC 4.8.1). Кстати, она уже официально не поддерживается, но существует форк Orwell Dev-C++, который обновляется по сей день. Установив, я запустил и для пробы написал простую программку, которая отображает текст «Привет, мир!». Но поздороваться она с миром так и не смогла, а лишь сказала что-то непонятное на древнеегипетском. После перелопачивания некоторых форумов и сайтов я нашел множество советов, но основная масса не способна была решить её полностью, образовывались подводные камни о которых расскажу далее.

После написания, компиляции и запуска такой программы:

Можно получить примерно такой результат

Вывод кракозябр в консоль

Сразу понятно, что на приветствие это совсем не похоже.

Последовав совету и усовершенствовав программу таким образом:

Дополнительно: можно было написать setlocale(0, «») и результат был бы аналогичным, при условии, что в настройках ОС язык системы русский.

На вывод я получил следующий результат

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

О них я узнал из обсуждения. У человека была аналогичная проблема, решенная таким образом. Но решение удовлетворяло его недолго, он сообщил, что программа при вводе данных и последующем их выводе не выводит на руском, она говорит на непонятном языке.

Коль уж так, я решил вновь внести изменения в программу, пусть она поздоровается со мной по имени.

Но в результате я получил не приветствие

Оскорбление на древнеегипетском?

Как видно, она не смогла назвать моего имени.

Поискав информацию в сети, я узнал о том, что setlocale() не работает с потокоми ввода/вывода, а то есть с cin,cout,etc. Выходит, что нужно искать альтернативные способы решения данной проблемы, которые предлагались на других сайтах.

Решение проблемы с отображением русских букв в консоли

Усовершенствовал программу таким образом

Вновь кракозябры в консоли

Снова что-то непонятное. Но решение, как оказалось, находилось очень близко. У функций SetConsoleCP() и SetConsoleOutputCP() есть небольшой недостаток — они работают только со шрифтом Lucida Console. В консоли же по умолчанию стоит шрифт Consolas, либо точечные шрифты. Следующим этапом сделать нужно вот что. Находясь в консоли нажать кнопку Cmd или нажать на значек программы в левом верхнем углу(Перед D:\… в названии), то есть вызвать контекстное меню окна. Далее нажать «Свойства».

Контекстное меню консоли

Далее появится окно с настройками, там необходимо выбрать шрифт Lucida Console.

Свойства консоли Windows

И нажать на кнопку ОК.

После такой процедуры я вновь запустил программу и…

Да! Она поздоровалась со мной по имени на русском языке.

Данный способ помог решить мне проблему с отображением русских символов в консоли Windows, надеюсь, что кому-нибудь еще он тоже поможет. Спасибо за внимание.

Для вас это может быть интересно:

Русские символы(буквы) при вводе/выводе в консоль на C++ : 28 комментариев

Блин все делаю как показано но все равно не получается в свойствах консоли установлен шрифт Lucida Console может поможете)
Пишу:
#include
#include
#include

using namespace std;

int main()
<
setlocale(LC_ALL,»Russian»);
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout

Проверил у себя — всё работает и отображает верно. Попробуйте набрать такую же программу, как на рисунке здесь http://nicknixer.ru/?p=349

Строчка setlocale(LC_ALL,»Russian») не нужна, без нее все работает.

В консоли 866 кодовая страница. Можно проще — Creator — Настройки — редактор — кодовая страница 866. Заработает самая первая программа.

Спасибо за 866 кодовую таблицу, все заработало.

Мучался 2 часа с выводом русских букв!
Перечитал кучу пустых советов.
Наконец-то.
Этот— самый толковый способ сделать так, чтобы все работало, и писало по русски!!
Благодарю Вас.

Я рад тому, что это помогло мне, Вам и другим людям.

Вижу, что не только в вебе проблема с отображением русских букв. PHP- программисты с вами!

Большое человеческое спасибо!
Очень помогли дельным советом. Всё работает как надо!

Спасибо!по полочкам и правильно всё разложено)

На мой взгляд, самый простой и действенный способ вывода русских букв в консоли Windows: писать исходники в ее родной кодировке, т. е. в OEM866 и проблем никаких не возникнет. Тем более, что почти все текстовые редакторы ее поддерживают. Для удобства можно установить эту кодировку по умолчанию в тот же Notepad++.
И не надо танцевать с бубном, подключать заголовки, использовать дополнительные функции, менять шрифты и т.д.

Спасибо, дай те бог здоровья!!

Благодарю за эти советы, они действующие, доходчивые. Ушла минута на то, что долго не мог сделать

Лайфхак от «Специалист»
После main
system(«chcp 1251 > nul»);

Имеется ввиду после фигурных скобок, т.е. в тело программы

Спасибо большое!Очень помогло.С начала про поток вывода узнал где то недели 2 назад, вчера заинтересовало почему поток ввода не работает. Менее минуты и вуаля. Надеюсь ругаться там не будет никто на счёт заголовочных файлов, но…ОС у всех разные, преобразователи (компиляторы) разные. Вот поэтому и советы для всех разные. Кому то кодировку сменить, а многим многим остальным дополнительные код надо писать. Может когда напишем собственную ОС(хотя кое что такое у нас было когда то давно) тогда ничего этого не надо будет. Автору статьи большое спасибо ещё раз. Русский язык стараюсь вписать куда угодно лишь бы было по русски. Надеюсь, это никого не задевает

Источник

Теперь вы знаете какие однокоренные слова подходят к слову Как пишется setlocale в с, а так же какой у него корень, приставка, суффикс и окончание. Вы можете дополнить список однокоренных слов к слову "Как пишется setlocale в с", предложив свой вариант в комментариях ниже, а также выразить свое несогласие проведенным с морфемным разбором.

Какие вы еще знаете однокоренные слова к слову Как пишется setlocale в с:



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

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