std:: wcstombs
|
Определено в заголовочном файле
<cstdlib>
|
||
|
std::
size_t
wcstombs
(
char
*
dst,
const
wchar_t
*
src,
std::
size_t
len
)
;
|
||
Преобразует последовательность широких символов из массива, первый элемент которого указывается src , в её узкое многобайтовое представление, начинающееся в начальном состоянии сдвига. Преобразованные символы сохраняются в последовательных элементах массива char, на который указывает dst . Не более чем len байт записывается в целевой массив.
Каждый символ преобразуется как при вызове std::wctomb , за исключением того, что состояние преобразования wctomb не изменяется. Преобразование останавливается, если:
- Нулевой символ был преобразован и сохранён.
- Обнаружен wchar_t , который не соответствует допустимому символу в текущей локали C.
- Следующий многобайтовый символ для сохранения превысил бы len .
Содержание |
Примечания
В большинстве реализаций эта функция обновляет глобальный статический объект типа std::mbstate_t при обработке строки и не может быть вызвана одновременно двумя потоками. std:: wcsrtombs следует использовать в таких случаях.
POSIX определяет общее расширение: если dst является нулевым указателем, эта функция возвращает количество байтов, которое было бы записано в dst при преобразовании. Аналогичное поведение стандартно для std:: wcsrtombs .
Параметры
| dst | - | указатель на массив узких символов, где будет сохранён многобайтовый символ |
| src | - | указатель на первый элемент широкой строки с завершающим нулём для преобразования |
| len | - | количество байт, доступных в массиве, на который указывает dst |
Возвращаемое значение
При успехе возвращает количество байт (включая любые сдвиговые последовательности, но исключая завершающий ' \0 ' ), записанных в массив символов, на первый элемент которого указывает dst .
При ошибке преобразования (если встречен недопустимый широкий символ), возвращает static_cast < std:: size_t > ( - 1 ) .
Пример
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); // UTF-8 narrow multibyte encoding const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水𝄋" char mbstr[11]; std::wcstombs(mbstr, wstr, 11); std::cout << "multibyte string: " << mbstr << '\n'; }
Вывод:
multibyte string: zß水𝄋
Смотрите также
|
преобразует широкую строку в узкую многобайтовую строку символов с учетом состояния
(функция) |
|
|
преобразует узкую многобайтовую строку символов в широкую строку
(функция) |
|
|
[virtual]
|
преобразует строку из
InternT
в
ExternT
, например при записи в файл
(виртуальная защищенная функция-член
std::codecvt<InternT,ExternT,StateT>
)
|
|
Документация C
для
wcstombs
|
|