Namespaces
Variants

std:: mbsinit

From cppreference.net
定义于头文件 <cwchar>
int mbsinit ( const std:: mbstate_t * ps ) ;

如果 ps 不是空指针, mbsinit 函数将判断所指向的 std::mbstate_t 对象是否描述初始转换状态。

目录

注释

虽然零初始化的 std::mbstate_t 始终表示初始转换状态,但可能存在其他 std::mbstate_t 值同样表示初始转换状态。

参数

ps - 指向待检查的 std::mbstate_t 对象的指针

返回值

0 如果 ps 不是空指针且不表示初始转换状态,否则返回非零值。

示例

#include <clocale>
#include <cwchar>
#include <iostream>
#include <string>
int main()
{
    // 允许 mbrlen() 处理 UTF-8 多字节编码
    std::setlocale(LC_ALL, "en_US.utf8");
    // UTF-8 窄多字节编码
    std::string str = "水"; // 或 u8"\u6c34" 或 "\xe6\xb0\xb4"
    std::mbstate_t mb = std::mbstate_t();
    (void)std::mbrlen(&str[0], 1, &mb);
    if (!std::mbsinit(&mb))
        std::cout << "处理完字符串 " << str << " 的第一个字节后,转换状态非初始状态\n";
    (void)std::mbrlen(&str[1], str.size() - 1, &mb);
    if (std::mbsinit(&mb))
        std::cout << "处理完字符串 " << str << " 的剩余 2 个字节后,转换状态恢复为初始转换状态\n";
}

输出:

处理完字符串 水的第一个字节后,转换状态非初始状态
处理完字符串 水的剩余 2 个字节后,转换状态恢复为初始转换状态

参见

用于迭代多字节字符串所需的转换状态信息
(类)
C 文档 for mbsinit