std::mbsinit
Материал из cppreference.com
Определено в заголовочном файле <cwchar> | ||
int mbsinit(conststd::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-8std::setlocale(LC_ALL, "en_US.utf8");// узкая многобайтовая кодировка UTF-8std::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 |