Namespaces
Variants

std:: wcstombs

From cppreference.net
Definido en el encabezado <cstdlib>
std:: size_t wcstombs ( char * dst, const wchar_t * src, std:: size_t len ) ;

Convierte una secuencia de caracteres anchos del array cuyo primer elemento está apuntado por src a su representación multibyte estrecha que comienza en el estado de desplazamiento inicial. Los caracteres convertidos se almacenan en los elementos sucesivos del array char apuntado por dst . No se escriben más de len bytes en el array de destino.

Cada carácter se convierte como si mediante una llamada a std::wctomb , excepto que el estado de conversión de wctomb no se ve afectado. La conversión se detiene si:

  • El carácter nulo fue convertido y almacenado.
  • Se encontró un wchar_t que no corresponde a un carácter válido en la configuración regional C actual.
  • El siguiente carácter multibyte a almacenar excedería len .

Contenidos

Notas

En la mayoría de las implementaciones, esta función actualiza un objeto estático global de tipo std::mbstate_t mientras procesa la cadena, y no puede ser llamada simultáneamente por dos hilos, std:: wcsrtombs debería ser utilizada en tales casos.

POSIX especifica una extensión común: si dst es un puntero nulo, esta función retorna el número de bytes que se escribirían en dst , si se convirtiera. Un comportamiento similar es estándar para std:: wcsrtombs .

Parámetros

dst - puntero al array de caracteres estrechos donde se almacenará el carácter multibyte
src - puntero al primer elemento de una cadena ancha terminada en nulo a convertir
len - número de bytes disponibles en el array apuntado por dst

Valor de retorno

En caso de éxito, retorna el número de bytes (incluyendo cualquier secuencia de desplazamiento, pero excluyendo el terminador ' \0 ' ) escritos en el array de caracteres cuyo primer elemento está apuntado por dst .

En caso de error de conversión (si se encontró un carácter ancho no válido), retorna static_cast < std:: size_t > ( - 1 ) .

Ejemplo

#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';
}

Salida:

multibyte string: zß水𝄋

Véase también

convierte una cadena ancha a cadena de caracteres multibyte estrecha, dado un estado
(función)
convierte una cadena de caracteres multibyte estrecha a cadena ancha
(función)
[virtual]
convierte una cadena de InternT a ExternT , como cuando se escribe a archivo
(función miembro protegida virtual de std::codecvt<InternT,ExternT,StateT> )
Documentación de C para wcstombs