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>
<cwchar> (wchar.h)
函数
btowc
fgetwc
fgetws
fputwc
fputws
fwide
fwprintf
fwscanf
getwc
getwchar
mbrlen
mbrtowc
mbsinit
mbsrtowcs
putwc
putwchar
swprintf
swscanf
ungetwc
vfwprintf
C++11
vfwscanf
C++11
vswprintf
C++11
vswscanf
vwprintf
C++11
vwscanf
wcrtomb
wcscat
wcschr
wcscmp
wcscoll
wcscpy
wcscspn
wcsftime
wcslen
wcsncat
wcsncmp
wcsncpy
wcspbrk
wcsrchr
wcsrtombs
wcsspn
wcsstr
wcstod
C++11
wcstof
wcstok
wcstol
C++11
wcstold
C++11
wcstoll
wcstoul
C++11
wcstoull
wcsxfrm
wctob
wmemchr
wmemcmp
wmemcpy
wmemmove
wmemset
wprintf
wscanf
类型
mbstate_t
size_t
struct tm
wchar_t
wint_t
宏常量
NULL
WCHAR_MAX
WCHAR_MIN
WEOF
参考
<cwchar>
mbsrtowcs
函数
<cwchar>
mbsrtowcs
size_t mbsrtowcs (wchar_t* dest, const char** src, size_t max, mbstate_t* ps);
将多字节字符串转换为宽字符字符串
将
src
指向的多字节序列转换为等效的宽字符序列(存储在
dest
指向的数组中),直到已转换
max
个宽字符,或者在多字节序列
src
中遇到一个
空字符
(该空字符也会被转换和存储,但不计入函数返回的长度中)。
如果成功转换了
max
个字符,则存储在
dest
中的结果字符串不会以空字符结尾。
该函数使用(并更新)由
ps
描述的转换状态。如果
ps
是一个空指针,该函数使用其自己的内部
转换状态
,该状态仅在调用此函数时根据需要进行更改。
如果函数转换了整个多字节字符串(直到找到空字符),并且
dest
不是空指针,则函数将
src
设置为空指针值,并保证结果状态为初始转换状态。
此函数的行为取决于所选
LC_CTYPE
C locale
的类别。
这是
mbstowcs
(
<cstdlib>
) 的
可重入
版本。
参数
dest
指向一个
wchar_t
数组的指针,该数组足够长,可以存储一个包含
max
个宽字符的字符串。
如果这是一个空指针,函数不会存储结果字符串,但仍会计算
src
中有多少字节构成一个有效的字符串(在这种情况下,
max
参数被忽略)。
src
指向待解释的 C 多字节字符串的指针(一个间接指针)。
如果转换提前停止,函数会修改此值,使其指向最后一个被转换的多字节字符之后的位置;如果函数到达了终止空字符,则此值会被修改为 null 指针。
max
要写入
dest
的最大宽字符数。
size_t
是一个无符号整数类型。
ps
指向一个定义转换状态的
mbstate_t
对象的指针。
返回值
写入到
dest
的宽字符数(不包括可能有的终止空字符)。
如果在转换过程中,函数遇到了一个不能构成有效多字节字符的字节序列,函数会设置
errno
为
EILSEQ
并返回
(
size_t
)-1
(
src
将指向第一个无法转换的字节。
请注意,
size_t
是一个无符号整型类型,因此可能返回的值中没有一个是小于零的。
另见
mbstowcs
将多字节字符串转换为宽字符串
(函数)
wcsrtombs
将宽字符串转换为多字节字符串
(函数)
mbrlen
获取多字节字符的长度
(函数)
mbrtowc
将多字节序列转换为宽字符
(函数)