std::mbsrtowcs

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

 
 
字符串库
null结尾的字符串
原文:
Null-terminated strings
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
字节的字符串
多字节字符串
宽字符串
原文:
Classes
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
basic_string
char_traits
 
NULL结尾的多字节字符串
宽/多字节转换
原文:
Wide/multibyte conversions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
mbsinit
mbtowc
mbstowcs
btowc
mbrtowc
mbsrtowcs
mbrtoc16(C++11)
mbrtoc32(C++11)
mblen
类型
原文:
Types
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
mbstate_t
 
在头文件 <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.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
。如果每个多字节字符转换为调用std::mbrtowc。的停止:转换。
原文:
Each multibyte character is converted as if by a call to std::mbrtowc. The conversion stops if:
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 。多字节的空字符被转换和存储。 src设置为NULL*ps初始位移状态.
    原文:
    The multibyte null character was converted and stored. src is set to NULL and *ps represents the initial shift state.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 。遇到了无效的多字节字符(根据目前的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.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
  • 。下一个宽字符存储将超过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.
    这段文字是通过 Google Translate 自动翻译生成的。
    您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 。参数。

dst -
。指针的结果将被储存到宽字符数组。
原文:
pointer to wide character array where the results will be stored
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
src -
。 null结尾的多字节字符串的第一个元素的指针的指针。
原文:
pointer to pointer to the first element of a null-terminated multibyte string
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
len -
。指出,DST的宽字符数组中的数。
原文:
number of wide characters available in the array pointed to by dst
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
ps -
。转换状态对象的指针。
原文:
pointer to the conversion state object
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

===。 返回值。===

。如果成功,则返回的宽字符数,不包括终止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.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
。在转换错误(如果遇到了无效的多字节字符),返回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.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 。为例。

#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
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(函数) [edit]
在给定的状态下,将宽字符串转换为多字节字符串
原文:
converts a wide string to narrow multibyte character string, given state
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(函数) [edit]
[虚]</div></div>
将字符串转换,如从文件读取时,从externT到Internt的
原文:
converts a string from externT to internT, such as when reading from file
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(虚拟保护成员函数of std::codecvt [edit]
C语言文档中的mbsrtowcs
来自“http://zh.cppreference.com/mwiki/index.php?title=cpp/string/multibyte/mbsrtowcs&oldid=33722