- 現(xiàn)代C++語言核心特性解析
- 謝丙堃
- 303字
- 2021-09-27 17:49:49
1.2.5 庫對新字符類型的支持
隨著新字符類型加入C++11標準,相應(yīng)的庫函數(shù)也加入進來。C11在中增加了4個字符的轉(zhuǎn)換函數(shù),包括:
size_t mbrtoc16( char16_t* pc16, const char* s, size_t n, mbstate_t* ps );
size_t c16rtomb( char* s, char16_t c16, mbstate_t* ps );
size_t mbrtoc32( char32_t* pc32, const char* s, size_t n, mbstate_t* ps );
size_t c32rtomb( char* s, char32_t c32, mbstate_t* ps );
它們的功能分別是多字節(jié)字符和UTF-16編碼字符互轉(zhuǎn),以及多字節(jié)字符和UTF-32編碼字符互轉(zhuǎn)。在C++11中,我們可以通過包含<cuchar>
來使用這4個函數(shù)。當然C++11中也添加了C++風(fēng)格的轉(zhuǎn)發(fā)方法std::wstring_convert
以及std::codecvt
。使用類模板std::wstring_convert
和std::codecvt
相結(jié)合,可以對多字節(jié)字符串和寬字符串進行轉(zhuǎn)換。不過這里并不打算花費篇幅介紹這些轉(zhuǎn)換方法,因為它們在C++17標準中已經(jīng)不被推薦使用了,所以應(yīng)該盡量避免使用它們。
除此之外,C++標準庫的字符串也加入了對新字符類型的支持,例如:
using u16string = basic_string;
using u32string = basic_string;
using wstring = basic_string;
推薦閱讀
- ClickHouse性能之巔:從架構(gòu)設(shè)計解讀性能之謎
- Python快樂編程:人工智能深度學(xué)習(xí)基礎(chǔ)
- Learn to Create WordPress Themes by Building 5 Projects
- 新一代通用視頻編碼H.266/VVC:原理、標準與實現(xiàn)
- Manga Studio Ex 5 Cookbook
- Vue.js 3.x從入門到精通(視頻教學(xué)版)
- Full-Stack Vue.js 2 and Laravel 5
- 零基礎(chǔ)學(xué)MQL:基于EA的自動化交易編程
- SQL Server 2012數(shù)據(jù)庫管理與開發(fā)項目教程
- Linux操作系統(tǒng)基礎(chǔ)案例教程
- Babylon.js Essentials
- Python程序設(shè)計與算法基礎(chǔ)教程(第2版)(微課版)
- Android嵌入式系統(tǒng)程序開發(fā):基于Cortex-A8(第2版)
- JBoss:Developer's Guide
- 分布式數(shù)據(jù)庫原理、架構(gòu)與實踐