Пространства имён
Варианты
Действия

std::mbsinit

Материал из cppreference.com
< cpp‎ | string‎ | multibyte
 
 
 
 
Определено в заголовочном файле <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 байтов 水, состояние преобразования является начальным состоянием преобразования

[править]Смотрите также

информация о состоянии преобразования, необходимая для итерации многобайтовых символьных строк
(класс)[править]
close