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 для проверки |
[править] Возвращаемое значение
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 байтов 水, состояние преобразования является начальным состоянием преобразования
[править] Смотрите также
информация о состоянии преобразования, необходимая для итерации многобайтовых символьных строк (класс) | |
Документация C по mbsinit
|