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
|
|