std:: 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 << "После обработки первого 1 байта " << str << " состояние преобразования не является начальным\n"; (void)std::mbrlen(&str[1], str.size() - 1, &mb); if (std::mbsinit(&mb)) std::cout << "После обработки оставшихся 2 байтов " << str << ", состояние преобразования является начальным состоянием преобразования\n"; }
Вывод:
После обработки первого 1 байта 水 состояние преобразования не является начальным После обработки оставшихся 2 байтов 水, состояние преобразования является начальным состоянием преобразования
Смотрите также
|
информация о состоянии преобразования, необходимая для итерации многобайтовых строк символов
(класс) |
|
|
C documentation
для
mbsinit
|
|