cplusplus
.com
教程
参考
文章
论坛
C++
教程
参考
文章
论坛
参考
C 库
<cassert> (assert.h)
<cctype> (ctype.h)
<cerrno> (errno.h)
C++11
<cfenv> (fenv.h)
<cfloat> (float.h)
C++11
<cinttypes> (inttypes.h)
<ciso646> (iso646.h)
<climits> (limits.h)
<clocale> (locale.h)
<cmath> (math.h)
<csetjmp> (setjmp.h)
<csignal> (signal.h)
<cstdarg> (stdarg.h)
C++11
<cstdbool> (stdbool.h)
<cstddef> (stddef.h)
C++11
<cstdint> (stdint.h)
<cstdio> (stdio.h)
<cstdlib> (stdlib.h)
<cstring> (string.h)
C++11
<ctgmath> (tgmath.h)
<ctime> (time.h)
C++11
<cuchar> (uchar.h)
<cwchar> (wchar.h)
<cwctype> (wctype.h)
容器
C++11
<array>
<deque>
C++11
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
C++11
<unordered_map>
C++11
<unordered_set>
<vector>
输入/输出
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
多线程
C++11
<atomic>
C++11
<condition_variable>
C++11
<future>
C++11
<mutex>
C++11
<thread>
其他
<algorithm>
<bitset>
C++11
<chrono>
C++11
<codecvt>
<complex>
<exception>
<functional>
C++11
<initializer_list>
<iterator>
<limits>
<locale>
<memory>
<new>
<numeric>
C++11
<random>
C++11
<ratio>
C++11
<regex>
<stdexcept>
<string>
C++11
<system_error>
C++11
<tuple>
C++11
<type_traits>
C++11
<typeindex>
<typeinfo>
<utility>
<valarray>
<cuchar> (uchar.h)
函数
C++11
c16rtomb
C++11
c32rtomb
C++11
mbrtoc16
C++11
mbrtoc32
参考
<cuchar>
mbrtoc32
函数
<cuchar>
mbrtoc32
size_t mbrtoc32 ( char32_t * pc32, const char * pmb, size_t max, mbstate_t * ps);
将多字节序列转换为 32 位字符
pmb
所指向的多字节字符被转换为一个 32 位字符,并存储在
pc32
所指向的位置。函数返回多字节字符的字节长度(最多为
max
)。
如果
__STD_UTF_32__
宏被定义,则存储在
pc32
的结果字符遵循 UTF-32 编码。
该函数使用(并更新)由
ps
描述的转换状态。如果
ps
是一个空指针,该函数使用其自己的内部
转换状态
,该状态仅在调用此函数时根据需要进行更改。
如果获取的字符等同于
空 32 位字符
,函数会重置转换状态并返回零(在将
空 32 位字符
存储到
pc32
之后)。
使用空指针作为
pmb
调用该函数也会重置转换状态,并忽略参数
pc32
和
max
(没有字符会存储到
pc32
)。
这是
char32_t
版本的
mbrtowc
(
<cwchar>
)。
参数
pc32
指向一个
char32_t
.
类型对象的指针。或者,此参数可以是一个空指针,在这种情况下,函数不存储
char32_t
转换结果,但仍返回字符的字节长度。
pmb
指向多字节字符第一个字节的指针。
或者,可以使用空指针调用该函数,在这种情况下,函数将转换状态(
ps
或其内部状态)重置为初始状态并返回零。
max
从
pmb
读取的最大字节数。
宏常量
MB_CUR_MAX
定义了在当前区域设置下,一个多字节字符可以包含的最大字节数。
size_t
是一个无符号整数类型。
ps
指向一个定义转换状态的
mbstate_t
对象的指针。
返回值
从
pmb
中用于生成 32 位字符的字节数。
如果这是
空 32 位字符
,或者
pmb
是一个空指针,则函数返回零(在第一种情况下,
空 32 位字符
会存储到
pc32
)。
如果多字节序列需要多于一个
char32_t
来表示(这在 UTF-32 中是不可能的)且尚未全部存储,则函数返回
(
size_t
)-3
并在
pc32
处存储适当的移位字符。下一次使用相同的
ps
参数指向与
pmb
相同的地址调用此函数,将产生表示该多字节序列所需的
char32_t
字符序列中的下一个字符。
如果
pmb
的前
max
个字符构成一个不完整(但可能有效)的多字节字符,函数返回
(
size_t
)-2
(没有值会存储到
pc32
)。
否则,如果
pmb
指向的字符不构成一个有效的多字节字符(或其开头部分),函数返回
(
size_t
)-1
并设置
errno
为
EILSEQ
(没有值会存储到
pc32
)。
请注意,
size_t
是一个无符号整数类型,因此可能返回的值没有一个是小于零的。
另见
c32rtomb
将 32 位字符转换为多字节序列
(函数)
mbrtoc16
将多字节序列转换为 16 位字符
(函数)
mbrtowc
将多字节序列转换为宽字符
(函数)