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::locale
std::locale
| å®ä¹äºå¤´æä»¶ <locale>
|
||
| class locale; |
||
std::locale ç±»å对象æ¯ä¸å¯åå¹³é¢çä¸å¯åç´¢å¼éã C++ è¾å
¥/è¾åºåºçæ¯ä¸ªæµå¯¹è±¡ä¸ä¸ä¸ª std::locale 对象å
³èï¼å¹¶ç¨å
¶å¹³é¢åæåæ ¼å¼åæææ°æ®ãå¦å¤ï¼ locale å¯¹è±¡ä¸æ¯ä¸ª std::basic_regex 对象å
³èã locale 对象亦å¯å¨æ å容å¨åç®æ³ä¸ç¨ä½è¿è¡å符串对ç
§çè°è¯ï¼èä¸è½è¢«ç´æ¥è®¿é®ï¼ä»¥è·å¾æä¿®æ¹å
¶æä¿æçå¹³é¢ã
C++ ç¨åºä¸æé çæ¯ä¸ª locale è³å°ä¿æä¸åæ åå¹³é¢ï¼ä½ç¨åºå¯ä»¥å®ä¹é¢å¤ç¹åï¼æå ¨æ°çå¹³é¢ï¼å¹¶å°å®ä»¬æ·»å å°ä»»ä½æ¢åç locale 对象ã
| 忝æå¹³é¢ | |
|---|---|
| std::collate<char> | std::collate<wchar_t> |
| std::ctype<char> | std::ctype<wchar_t> |
| std::codecvt<char,char,mbstate_t> std::codecvt<char16_t,char,mbstate_t> |
std::codecvt<char32_t,char,mbstate_t> std::codecvt<wchar_t,char,mbstate_t> |
| std::moneypunct<char> std::moneypunct<char,true> |
std::moneypunct<wchar_t> std::moneypunct<wchar_t,true> |
| std::money_get<char> | std::money_get<wchar_t> |
| std::money_put<char> | std::money_put<wchar_t> |
| std::numpunct<char> | std::numpunct<wchar_t> |
| std::num_get<char> | std::num_get<wchar_t> |
| std::num_put<char> | std::num_put<wchar_t> |
| std::time_get<char> | std::time_get<wchar_t> |
| std::time_put<char> | std::time_put<wchar_t> |
| std::messages<char> | std::messages<wchar_t> |
å¨å é¨ï¼ locale 对象å®ç°ä¸ºå¦å宿¯ä¸ä¸ªæåï¼ä»¥ std::locale::id ç´¢å¼çï¼çæ°ç»çå¼ç¨è®¡æ°æéï¼æ°ç»å ç´ ä¸ºæåå¹³é¢çå¼ç¨è®¡æ°æéï¼å¤å¶ locale åªå¤å¶ä¸ä¸ªæéï¼å¹¶å¢å å 个å¼ç¨è®¡æ°ãä¸ºç»´æ¤æ å C++ åºçº¿ç¨å®å ¨ä¿è¯ï¼ä¸å对象ä¸çæä½å§ç»ä¸ºçº¿ç¨å®å ¨ï¼ï¼ locale å¼ç¨è®¡æ°åæ¯ä¸ªå¹³é¢çå¼ç¨è®¡æ°é½ä»¥çº¿ç¨å®å ¨æ¹å¼æ´æ°ï¼ç±»ä¼¼ std::shared_ptr ã
æåç±»å
| å¹³é¢ç´¢å¼ç±»åï¼æ¯ä¸ªå¹³é¢ç±»å¿
须声ææç»§æ¿æ¤ç±»åçå
¬å¼éææå (ç±») | |
| ææå¹³é¢åç±»çåç±»ï¼ä»»ä½åç±»çæ¯ä¸ª facet é½ä»æ¤ç±»åå¯¼åº (ç±») | |
| category |
int (typedef) |
æå对象
| none [éæ] |
æç¤ºæ å¹³é¢ç±»å«ç category ç±»åé¶å¼ (å ¬å¼éææå常é) |
| collate [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| ctype [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| monetary [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| numeric [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| time [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| messages [éæ] |
category ç±»å使©ç å¼ (å ¬å¼éææå常é) |
| all [éæ] |
collate | ctype | monetary | numeric | time | messages (å ¬å¼éææå常é) |
æå彿°
| æé æ°ç locale (å ¬å¼æå彿°) | |
| ææ locale åå
¶å¼ç¨è®¡æ°å为é¶çå¹³é¢ (å ¬å¼æå彿°) | |
| æ¿æ¢ locale (å ¬å¼æå彿°) | |
| 以å¤å¶èªå¦ä¸ locale çç¼è¯æ¶é´å«ç平颿é locale (å ¬å¼æå彿°) | |
| è¿å locale çåç§°ï¼æè¥å®æ åå为 "*" (å ¬å¼æå彿°) | |
| (C++20 ä¸ç§»é¤) |
locale 对象ä¹é´çç¸çæ§æ¯è¾ (å ¬å¼æå彿°) |
| ç¨æ¤ locale ç collate å»é¢ä»¥åå
¸åºæ¯è¾ä¸¤ä¸ªå符串 (å ¬å¼æå彿°) | |
| [éæ] |
æ´æ¹å
¨å±æ¬å°ç¯å¢ (å ¬å¼éææå彿°) |
| [éæ] |
è·å¾å° "C" æ¬å°ç¯å¢çå¼ç¨ (å ¬å¼éææå彿°) |
示ä¾
æ¼ç¤ºæ¬å°ç¯å¢å½±åçç¨åºï¼è·¨å¹³å°ï¼çå ¸ååæ
#include <iostream> #include <locale>  int main() { std::wcout << "User-preferred locale setting is " << std::locale("").name().c_str() << '\n'; // å¨å¯å¨æ¶ï¼å ¨å±æ¬å°ç¯å¢æ¯ "C" æ¬å°ç¯å¢ std::wcout << 1000.01 << '\n'; // ä»¥ç¨æ·åå¥½çæ¬å°ç¯å¢æ¿æ¢ C++ æ¬å°ç¯å¢å C æ¬å°ç¯å¢ std::locale::global(std::locale("")); // å°æ¥ç宽å符è¾åºä½¿ç¨æ°çå ¨å±æ¬å°ç¯å¢ std::wcout.imbue(std::locale()); // 忬¡è¾åºå䏿°å std::wcout << 1000.01 << '\n'; }
å¯è½çè¾åºï¼
User-preferred locale setting is en_US.UTF8 1000.01 1,000.01
åé
| 仿¬å°ç¯å¢è·å¾ä¸ä¸ªå»é¢ (彿°æ¨¡æ¿) | |
| æ£æ¥æ¬å°ç¯å¢æ¯å¦å®ç°ç¹å®çå»é¢ (彿°æ¨¡æ¿) | |
| 设置æ¬å°ç¯å¢ ( std::ios_base çå
¬å¼æå彿°) | |
| è¿åå½åæ¬å°ç¯å¢ ( std::ios_base çå
¬å¼æå彿°) |