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

std::mbsinit

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

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

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