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

std::wcstombs

Материал из cppreference.com
< cpp‎ | string‎ | multibyte

Определено в заголовочном файле <cstdlib>
std::size_t wcstombs( char* dst, const wchar_t* src, std::size_t len)
Преобразует последовательность широких символов из массива, чей первый элемент, на который указывает src его узкое представление многобайтовую, который начинается в начальном состоянии сдвига. Старинная символы хранятся в последовательных элементов массива символов, на которую указывает dst. Не более len байты записываются в массив назначения.
Оригинал:
Converts a sequence of wide characters from the array whose first element is pointed to by src to its narrow multibyte representation that begins in the initial shift state. Converted characters are stored in the successive elements of the char array pointed to by dst. No more than len bytes are written to the destination array.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Каждый персонаж превращается как бы призыв к std::wctomb, за исключением того, что преобразование государства wctomb является неизменным. Преобразование прекращается, если:
Оригинал:
Each character is converted as if by a call to std::wctomb, except that the wctomb's conversion state is unaffected. The conversion stops if:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • Нулевой символ был преобразован и сохранен.
    Оригинал:
    The null character was converted and stored.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • wchar_t было установлено, что не соответствует допустимым символом в текущей локали C.
    Оригинал:
    A wchar_t was found that does not correspond to a valid character in the current C locale.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • Следующий символ многобайтовых будут храниться будет превышать len.
    Оригинал:
    The next multibyte character to be stored would exceed len.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Заметки

В большинстве реализаций, эта функция обновления глобальный статический объект типа std::mbstate_t как он обрабатывает через строку, и не может быть вызвана одновременно из двух потоков, std::wcsrtombs должны быть использованы в таких случаях.
Оригинал:
In most implementations, this function updates a global static object of type std::mbstate_t as it processes through the string, and cannot be called simultaneously by two threads, std::wcsrtombs should be used in such cases.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
POSIX определяет общее расширение: если dst является нулевым указателем, то эта функция возвращает количество байтов, которое будет записано на dst, если преобразовать. Подобное поведение является стандартным для std::wcsrtombs.
Оригинал:
POSIX specifies a common extension: if dst is a null pointer, this function returns the number of bytes that would be written to dst, if converted. Similar behavior is standard for std::wcsrtombs.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Параметры

dst -
Указатель на узкой массив символов, где многобайтовых символов будут сохранены
Оригинал:
pointer to narrow character array where the multibyte character will be stored
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
src -
Указатель на первый элемент нулем строку широких преобразовать
Оригинал:
pointer to the first element of a null-terminated wide string to convert
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
len -
количество байт доступны в массиве, на который указывает DST
Оригинал:
number of byte available in the array pointed to by dst
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Возвращаемое значение

В случае успеха возвращает количество байтов (включая любые изменения последовательностей, но исключая завершающий '\0') записывается в массив символов, первый элемент, на который указывает dst.
Оригинал:
On success, returns the number of bytes (including any shift sequences, but excluding the terminating '\0') written to the character array whose first element is pointed to by dst.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
На ошибки преобразования (если недействительных широкий символ встречается), возвращает static_cast<std::size_t>(-1).
Оригинал:
On conversion error (if invalid wide character was encountered), returns static_cast<std::size_t>(-1).
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Пример

#include <iostream>
#include <clocale>
#include <cstdlib>
 
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ß水𝄋

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

Преобразует строку широких к узким многобайтовой строки символов, данное состояние
Оригинал:
converts a wide string to narrow multibyte character string, given state
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [edit]
преобразует узкой буквенная многобайтовых широкой строки
Оригинал:
converts a narrow multibyte character string to wide string
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(функция) [edit]
[virtual]
преобразует строку из internT в externT, например, при записи в файл
Оригинал:
converts a string from internT to externT, such as when writing to file
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(virtual protected std::codecvt функция-член) [edit]
C documentation for wcstombs