std:: wcstombs
|
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
|
|