std::mbsinit — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
||
Если 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 << "После обработки оставшихся 2 байтов " << str << ", состояние преобразования является начальным\n" << "состоянием преобразования\n"; }
Вывод:
После обработки первого байта 水 состояние преобразования не является начальным После обработки оставшихся 2 байтов 水, состояние преобразования является начальным состоянием преобразования