std:: mbstowcs
|
Определено в заголовочном файле
<cstdlib>
|
||
|
std::
size_t
mbstowcs
(
wchar_t
*
dst,
const
char
*
src,
std::
size_t
len
)
;
|
||
Преобразует многобайтовую строку символов из массива, на первый элемент которого указывает src , в её широкосимвольное представление. Преобразованные символы сохраняются в последовательных элементах массива, на который указывает dst . Не более чем len широких символов записывается в целевой массив.
Каждый символ преобразуется так, как если бы он был обработан вызовом std::mbtowc , за исключением того, что состояние преобразования mbtowc не изменяется. Преобразование останавливается, если:
- Многобайтовый нулевой символ был преобразован и сохранён.
- Встречен недопустимый (в текущей локали C) многобайтовый символ.
- Следующий широкий символ для сохранения превысил бы len .
Содержание |
Примечания
В большинстве реализаций эта функция обновляет глобальный статический объект типа std::mbstate_t в процессе обработки строки и не может быть вызвана одновременно двумя потоками. std::mbsrtowcs следует использовать в таких случаях.
POSIX определяет общее расширение: если dst является нулевым указателем, эта функция возвращает количество широких символов, которые были бы записаны в dst при преобразовании. Аналогичное поведение стандартизировано для std::mbsrtowcs .
Параметры
| dst | - | указатель на массив широких символов, в котором будет сохранена широкая строка |
| src | - | указатель на первый элемент завершающейся нулём многобайтовой строки для преобразования |
| len | - | количество широких символов, доступных в массиве, на который указывает dst |
Возвращаемое значение
При успешном выполнении возвращает количество широких символов, исключая завершающий L ' \0 ' , записанных в целевой массив.
При ошибке преобразования (если встречен недопустимый многобайтовый символ), возвращает static_cast < std:: size_t > ( - 1 ) .
Пример
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::wcout.imbue(std::locale("en_US.utf8")); const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t wstr[5]; std::mbstowcs(wstr, mbstr, 5); std::wcout << "wide string: " << wstr << '\n'; }
Вывод:
wide string: zß水🍌
Смотрите также
|
преобразует узкую многобайтовую строку символов в широкую строку с учетом состояния
(функция) |
|
|
преобразует широкую строку в узкую многобайтовую строку символов
(функция) |
|
|
[virtual]
|
преобразует строку из
ExternT
в
InternT
, например, при чтении из файла
(виртуальная защищенная функция-член
std::codecvt<InternT,ExternT,StateT>
)
|
|
Документация C
для
mbstowcs
|
|