C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- std::locale
- std::use_facet
- std::has_facet
- std::isspace(std::locale)
- std::isblank(std::locale)
- std::codecvt
- std::wstring_convert
- std::iscntrl(std::locale)
- std::isupper(std::locale)
- std::islower(std::locale)
- std::isalpha(std::locale)
- std::isdigit(std::locale)
- std::ispunct(std::locale)
- std::isxdigit(std::locale)
- std::isalnum(std::locale)
- std::isprint(std::locale)
- std::isgraph(std::locale)
- std::toupper(std::locale)
- std::tolower(std::locale)
- std::wbuffer_convert
- std::ctype_base
- std::codecvt_base
- std::messages_base
- std::time_base
- std::money_base
- std::ctype
- std::ctype<char>
- std::collate
- std::messages
- std::time_get
- std::time_put
- std::num_get
- std::num_put
- std::numpunct
- std::money_get
- std::money_put
- std::moneypunct
- std::ctype_byname
- std::codecvt_byname
- std::messages_byname
- std::collate_byname
- std::time_get_byname
- std::time_put_byname
- std::numpunct_byname
- std::moneypunct_byname
- std::codecvt_utf8
- std::codecvt_utf16
- std::codecvt_utf8_utf16
- std::codecvt_mode
- std::setlocale
- std::localeconv
- std::lconv
- LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME
- 注é
- æ£å表达å¼åº
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ¬å°ååº > std::setlocale
std::setlocale
| å®ä¹äºå¤´æä»¶ <clocale>
|
||
| char* setlocale( int category, const char* locale); |
||
setlocale 彿°å®è£
æå®çç³»ç»æ¬å°ç¯å¢æå
¶ä¸é¨åï¼ä½ä¸ºæ°ç C æ¬å°ç¯å¢ãä¿®æ¹ä¿æææï¼å¹¶å½±åææå
³ä¹æ¬å°ç¯å¢ç C åºå½æ°æ§è¡ï¼å°ä¸æ¬¡è°ç¨ setlocale 为æ¢ãè¥ locale 为空æéï¼å setlocale æ¥è¯¢å½å C æ¬å°ç¯å¢èä¸ä¿®æ¹å®ã
åæ°
| category | - | æ¬å°ç¯å¢ç±»å«æ è¯ç¬¦ï¼ LC_xxx å®ä¹ä¸ãå¯ä¸º 0 ã |
| locale | - | ç³»ç»éå®çæ¬å°ç¯å¢æ è¯ç¬¦ã对äºç¨æ·åå¥½çæ¬å°ç¯å¢ä¸º "" ï¼å¯¹äºæå°æ¬å°ç¯å¢ä¸º "C" ã |
è¿åå¼
æåçªç©ºç»æ¢å符串çæéï¼å®è¡¨ç¤ºåºç¨æ´æ¹åç C æ¬å°ç¯å¢ï¼è¥åå¨ãæå¨å¤±è´¥æ¶ä¸ºç©ºæéã
è¿åå符串ç坿¬åå° std::setlocale çæ¤è°ç¨ä¸æç¨çç±»å«ï¼å¯å¨ç¨åºçåé¢ç¨æ¥æ¢å¤æ¬å°ç¯å¢å°æ¤è°ç¨ç»ææ¶çç¶æã
注æ
ç¨åºå¯å¨è¿ç¨ä¸ï¼è¿è¡ä»»ä½ç¨æ·ä»£ç å伿§è¡ std::setlocale(LC_ALL, "C"); çç价代ç ã
尽管è¿åç±»å为 char* ï¼ä¿®æ¹è¢«æåçåç¬¦æ¯æªå®ä¹è¡ä¸ºã
setlocale ä¿®æ¹å½±åæ¬å°ç¯å¢ä¾èµå½æ°çå
¨å±ç¶æï¼æ
ä»ä¸ä¸ªçº¿ç¨è°ç¨å®ï¼èå¦ä¸çº¿ç¨åæ¶æ§è¡ä»»ä½ä¸å彿°æ¯æªå®ä¹è¡ä¸ºï¼ 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 ã
POSIX 亦å®ä¹å为 "POSIX" çæ¬å°ç¯å¢ï¼å®å§ç»å¯è®¿é®ï¼å¹¶åç¡®çäºé»è®¤çæå° "C" æ¬å°ç¯å¢ã
POSIX 亦æå®åç»§ç setlocale è°ç¨å¯ä»¥éæ³åè¿åçæéï¼èä¸ä» æ¯è¢«æåçå符串å 容ã
示ä¾
#include <cstdio> #include <clocale> #include <ctime> #include <cwchar>  int main() { // C æ¬å°ç¯å¢å°ä¸ºå¯ç¨ UTF-8 çè±æï¼ // å°æ°ç¹å°ä¸ºå¾·æ // æ¥æåæ¶é´æ ¼å¼å°ä¸ºæ¥æ std::setlocale(LC_ALL, "en_US.UTF-8"); std::setlocale(LC_NUMERIC, "de_DE.UTF-8"); std::setlocale(LC_TIME, "ja_JP.UTF-8");  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 æç¨çæ¬å°ç¯å¢ç±»å« (å®å¸¸é) | |
| ç¨ä»¥å°è£
æåå·®å¼ç夿å»é¢çéå (ç±») |