std::mbsinit
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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
| |