std::mbsinit
来自cppreference.com
<tbody>
</tbody>
| 在标头 <cwchar> 定义
|
||
int mbsinit( const std::mbstate_t* ps); |
||
若 ps 不是空指针,则 mbsinit 函数确定被指向的 std::mbstate_t 对象是否描述初始迁移状态。
注解
尽管零初始化的 std::mbstate_t 始终表示初始转换状态,亦可能有其他 std::mbstate_t 值表示初始转换状态。
参数
| ps | - | 指向要检验的 std::mbstate_t 对象的指针 |
返回值
若 ps 不是空指针且不表示初始迁移状态则为 0,否则为非零值。
示例
运行此代码
#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"水"; // 或 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 个字节后,转换状态为初始转换状态
参阅
| 迭代多字节字符串所需的转换状态信息 (类) | |
mbsinit 的 C 文档
| |