名前空間
変種
操作

「cpp/locale/setlocale」の版間の差分

提供: cppreference.com
< cpp‎ | locale
(Use {{lc}}. Update links. Various fixes.)
(Fix some translations)
55行: 55行:
 
}}
 
}}
  
===も参照してください===
+
======
 
{{dsc begin}}
 
{{dsc begin}}
 
{{dsc inc | cpp/locale/dsc LC_categories}}
 
{{dsc inc | cpp/locale/dsc LC_categories}}

2015年11月30日 (月) 06:32時点における版

 
 
 
ヘッダ <clocale> で定義
char* setlocale( int category, const char* locale);
setlocale関数は、新しいCロケールとして指定されているシステムのロケールまたはその一部をインストールします。修正は引き続き有効であるとsetlocaleへの次のコールまで、ロケールに依存するすべてのCライブラリ関数の実行に影響を与えます。 localeがNULLポインターである場合、setlocaleは、それを変更することなく、現在のCロケールを照会.
Original:
The setlocale function installs the specified system locale or its portion as the new C locale. The modifications remain in effect and influences the execution of all locale-sensitive C library functions until the next call to setlocale. If locale is a null pointer, setlocale queries the current C locale without modifying it.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

目次

パラメータ

category - マクロの一つ。 nullの可能性があります.
Original:
locale -
システム固有のロケール識別子。最小限のロケール用のユーザの優先ロケールまたは""ため"C"することができます
Original:
system-specific locale identifier. Can be "" for the user-preferred locale or "C" for the minimal locale
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

値を返します

変更を適用した後のCロケールを識別狭いNULLで終わる文字列があれば、失敗した場合はNULLポインタへのポインタ..
Original:
Pointer to a narrow null-terminated string identifying the C locale after applying the changes, if any, or null pointer on failure.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

ノート

任意のユーザコードが実行される前に、プログラムの起動時に、std::setlocale(LC_ALL, "C");のと同じ処理が実行され.
Original:
During program startup, the equivalent of std::setlocale(LC_ALL, "C"); is executed before any user code is run.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
戻り値の型がchar*ですが、ポイント先の文字を変更すると、未定義の動作です.
Original:
Although the return type is char*, modifying the pointed-to characters is undefined behavior.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
setlocaleはロケールに依存した機能の実行に影響を与えるグローバルな状態を変更するので、別のスレッドが次のいずれかの機能を実行している間、それは、一つのスレッドからそれを呼び出すように未定義の動作です:std::fprintfstd::isprintstd::iswdigitstd::localeconvstd::tolowerstd::fscanfstd::ispunctstd::iswgraphstd::mblenstd::toupperstd::isalnumstd::isspacestd::iswlowerstd::mbstowcsstd::towlowerstd::isalphastd::isupperstd::iswprintstd::mbtowcstd::towupperstd::isblankstd::iswalnumstd::iswpunctstd::setlocalestd::wcscollstd::iscntrlstd::iswalphastd::iswspacestd::strcollstd::wcstodstd::isdigitstd::iswblankstd::iswupperstd::strerrorstd::wcstombsstd::isgraphstd::iswcntrlstd::iswxdigitstd::strtodstd::wcsxfrmstd::islowerstd::iswctypestd::isxdigit.
Original:
Because setlocale modifies global state which affects execution of locale-dependent functions, it is undefined behavior to call it from one thread, while another thread is executing any of the following functions: std::fprintf, std::isprint, std::iswdigit, std::localeconv, std::tolower, std::fscanf, std::ispunct, std::iswgraph, std::mblen, std::toupper, std::isalnum, std::isspace, std::iswlower, std::mbstowcs, std::towlower, std::isalpha, std::isupper, std::iswprint, std::mbtowc, std::towupper, std::isblank, std::iswalnum, std::iswpunct, std::setlocale, std::wcscoll, std::iscntrl, std::iswalpha, std::iswspace, std::strcoll, std::wcstod, std::isdigit, std::iswblank, std::iswupper, std::strerror, std::wcstombs, std::isgraph, std::iswcntrl, std::iswxdigit, std::strtod, std::wcsxfrm, std::islower, std::iswctype, std::isxdigit.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

#include <cstdio>
#include <clocale>
#include <ctime>
#include <cwchar>
 
int main()
{
    // the C locale will be UTF-8 enabled English;
    // decimal dot will be German
    // date and time formatting will be Japanese
    std::setlocale(LC_ALL, "en_US.UTF-8");
    std::setlocale(LC_NUMERIC, "de_DE");
    std::setlocale(LC_TIME, "ja_JP");
 
    wchar_t str[100];
    std::time_t t = std::time(NULL);
    std::wcsftime(str, 100, L"%A %c", std::localtime(&t));
    std::wprintf(L"Number: %.2f\nDate: %Ls\n", 3.14, str);
}

出力:

Number: 3,14
Date: 月曜日 2011年12月19日 18時04分40秒

参照

std::setlocale のためのロケールカテゴリ
(マクロ定数) [edit]
文化の違いをカプセル化する多相的なファセットの集合
(クラス) [edit]