std::mbsrtowcs

来自cppreference.com
< cpp‎ | string‎ | multibyte

 
 
 
空终止多字节字符串
宽/多字节转换
原文:
Wide/multibyte conversions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
mbsrtowcs
(C++11)
(C++11)
类型
原文:
Types
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <cwchar>
std::size_t mbsrtowcs( wchar_t* dst,

                       const char** src,
                       std::size_t len,

                       std::mbstate_t* ps );
。将一个空结束的多字节字符序列,该序列中所描述的*ps转换状态,从数组的第一个元素是指向*src它的宽字符表示开始。 dst不为空,转换字符被保存在连续的wchar_t数组元素所指向的dst。以上len宽字符写入到目标数组.
原文:
Converts a null-terminated multibyte character sequence, which begins in the conversion state described by *ps, from the array whose first element is pointed to by *src to its wide character representation. If dst is not null, converted characters are stored in the successive elements of the wchar_t array pointed to by dst. No more than len wide characters are written to the destination array.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
。如果每个多字节字符转换为调用std::mbrtowc。的停止:转换。
原文:
Each multibyte character is converted as if by a call to std::mbrtowc. The conversion stops if:
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。多字节的空字符被转换和存储。 src设置为NULL*ps初始位移状态.
    原文:
    The multibyte null character was converted and stored. src is set to NULL and *ps represents the initial shift state.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。遇到了无效的多字节字符(根据目前的C语言环境)。 src被设置为指向的第一个未转化的多字节字符开始.....
    原文:
    An invalid multibyte character (according to the current C locale) was encountered. src is set to point at the beginning of the first unconverted multibyte character.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。
  • 。下一个宽字符存储将超过lensrc被设置为指向的第一个未转化的多字节字符开始。如果这种情况不检查dst==NULL.
    原文:
    the next wide character to be stored would exceed len. src is set to point at the beginning of the first unconverted multibyte character. This condition is not checked if dst==NULL.
    文本通过谷歌翻译机器翻译。
    你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。参数。

dst -
。指针的结果将被储存到宽字符数组。
原文:
pointer to wide character array where the results will be stored
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
src -
。 null结尾的多字节字符串的第一个元素的指针的指针。
原文:
pointer to pointer to the first element of a null-terminated multibyte string
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
len -
。指出,DST的宽字符数组中的数。
原文:
number of wide characters available in the array pointed to by dst
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
ps -
。转换状态对象的指针。
原文:
pointer to the conversion state object
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

===。 返回值。===

。如果成功,则返回的宽字符数,不包括终止L'\0',写入的字符数组..如果dst==NULL,会被写入给定的无限长的宽字符数返回.
原文:
On success, returns the number of wide characters, excluding the terminating L'\0', written to the character array.. If dst==NULL, returns the number of wide characters that would have been written given unlimited length.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
。在转换错误(如果遇到了无效的多字节字符),返回static_cast<std::size_t>(-1),店EILSEQerrno不明确的状态,并留下*ps.
原文:
On conversion error (if invalid multibyte character was encountered), returns static_cast<std::size_t>(-1), stores EILSEQ in errno, and leaves *ps in unspecified state.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。为例。

#include <iostream>
#include <vector>
#include <clocale>
#include <cwchar>
 
void print_as_wide(const char* mbstr)
{
    std::mbstate_t state = std::mbstate_t();
    int len = 1 + std::mbsrtowcs(NULL, &mbstr, 0, &state);
    std::vector<wchar_t> wstr(len);
    std::mbsrtowcs(&wstr[0], &mbstr, wstr.size(), &state);
    std::wcout << "Wide string: " << &wstr[0] << '\n'
               << "The length, including '\\0': " << wstr.size() << '\n';
}
 
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    const char* mbstr = u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
                        // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
    print_as_wide(mbstr);
}

输出:

Wide string: zß水𝄋
The length, including '\0': 5

[编辑] 。另请参阅。

在给定的状态下,将下一个多字节字符转换为宽字符
原文:
converts the next multibyte character to wide character, given state
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数) [编辑]
在给定的状态下,将宽字符串转换为多字节字符串
原文:
converts a wide string to narrow multibyte character string, given state
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数) [编辑]
[虚]
将字符串转换,如从文件读取时,从externT到Internt的
原文:
converts a string from externT to internT, such as when reading from file
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(std::codecvt 的虚受保护成员函数) [编辑]
mbsrtowcsC 文档