std::mbsinit
来自cppreference.com
在标头 <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 <string> #include <iostream> #include <cwchar> 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 << "After processing the first 1 byte of " << str << " the conversion state is not initial\n"; } (void)std::mbrlen(&str[1], str.size()-1, &mb); if (std::mbsinit(&mb)) { std::cout << "After processing the remaining 2 bytes of " << str << ", the conversion state is initial conversion state\n"; } }
输出:
After processing the first 1 byte of 水 the conversion state is not initial After processing the remaining 2 bytes of 水, the conversion state is initial conversion state
参阅
迭代多字节字符串所需的转换状态信息 (类) |