std::mbtowc

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

 
 
 
空终止多字节字符串
宽/多字节转换
原文:
Wide/multibyte conversions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
类型
原文:
Types
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <cstdlib>
int mbtowc( wchar_t* pwc, const char* s, std::size_t n )
。转换一个多字节字符的第一个字节指出,s为宽字符,写入*pwcpwc不为空.
原文:
Converts a multibyte character whose first byte is pointed to by s to a wide character, written to *pwc if pwc is not null.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
。如果s是一个空指针,将全局转换状态,并确定是否使用了移位序列.
原文:
If s is a null pointer, resets the global conversion state and determines whether shift sequences are used.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 。参数。

s -
。多字节字符的指针。
原文:
pointer to the multibyte character
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
n -
。限制的字节数,可以检查。
原文:
limit on the number of bytes in s that can be examined
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
pwc -
。用于输出的宽字符指针。
原文:
pointer to the wide character for output
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

===。 返回值。===

。如果s是不是一个空指针,返回的字节数中所包含的多字节字符或-1如果第一个字节所指向的s没有形成一个有效的多字节字符或0如果s指向空字符内'\0',.
原文:
If s is not a null pointer, returns the number of bytes that are contained in the multibyte character or -1 if the first bytes pointed to by s do not form a valid multibyte character or 0 if s is pointing at the null charcter '\0'.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
。如果s是一个空指针,将其内部的转换状态来表示的初始变速状态,并返回0如果当前的多字节编码不是状态依赖(不使用移位序列)或一个非零的值,如果当前的多字节编码是状态依赖(使用Shift序列).
原文:
If s is a null pointer, resets its internal conversion state to represent the initial shift state and returns 0 if the current multibyte encoding is not state-dependent (does not use shift sequences) or a non-zero value if the current multibyte encoding is state-dependent (uses shift sequences).
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。注释。

。每次调用mbtowc更新的内部全局转换状态(静态std::mbstate_t类型的对象,只知道此功能)。如果多字节编码使用上档状态,必须小心,以避免回溯或多次扫描。在任何情况下,多线程不应该叫mbtowc不同​​步:std::mbrtowc可以用来代替.
原文:
Each call to mbtowc updates the internal global conversion state (a static object of type std::mbstate_t, only known to this function). If the multibyte encoding uses shift states, care must be taken to avoid backtracking or multiple scans. In any case, multiple threads should not call mbtowc without synchronization: std::mbrtowc may be used instead.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

[编辑] 。为例。

#include <iostream>
#include <clocale>
#include <cstring>
#include <cstdlib>
 
int print_mb(const char* ptr)
{
    std::mbtowc(NULL, 0, 0); // reset the conversion state
    const char* end = ptr + std::strlen(ptr);
    int ret;
    for (wchar_t wc; (ret = std::mbtowc(&wc, ptr, end-ptr)) > 0; ptr+=ret) {
        std::wcout << wc;
    }
    std::wcout << '\n';
    return ret;
}
 
int main()
{
    std::setlocale(LC_ALL, "en_US.utf8");
    // UTF-8 narrow multibyte encoding
    const char* str = u8"z\u00df\u6c34\U0001d10b"; // or u8"zß水𝄋"
                      // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b";
    print_mb(str);
}

输出:

zß水𝄋

[编辑] 。另请参阅。

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

(函数) [编辑]
返回下一个多字节字符的字节数
原文:
returns the number of bytes in the next multibyte character
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

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

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