std:: mbstowcs
|
Definido en el encabezado
<cstdlib>
|
||
|
std::
size_t
mbstowcs
(
wchar_t
*
dst,
const
char
*
src,
std::
size_t
len
)
;
|
||
Convierte una cadena de caracteres multibyte del array cuyo primer elemento está apuntado por src a su representación de caracteres anchos. Los caracteres convertidos se almacenan en los elementos sucesivos del array apuntado por dst . No se escriben más de len caracteres anchos en el array de destino.
Cada carácter se convierte como si mediante una llamada a std::mbtowc , excepto que el estado de conversión de mbtowc no se ve afectado. La conversión se detiene si:
- El carácter nulo multibyte fue convertido y almacenado.
- Se encontró un carácter multibyte inválido (en la configuración regional C actual).
- El siguiente carácter ancho 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::mbsrtowcs 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 caracteres anchos que serían escritos en dst , si se convirtiera. Un comportamiento similar es estándar para std::mbsrtowcs .
Parámetros
| dst | - | puntero al arreglo de caracteres anchos donde se almacenará la cadena ancha |
| src | - | puntero al primer elemento de una cadena multibyte terminada en nulo a convertir |
| len | - | número de caracteres anchos disponibles en el arreglo apuntado por dst |
Valor de retorno
En caso de éxito, retorna el número de caracteres anchos, excluyendo el L ' \0 ' final, escritos en el array de destino.
En caso de error de conversión (si se encuentra un carácter multibyte 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"); 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'; }
Salida:
wide string: zß水🍌
Véase también
|
convierte una cadena de caracteres multibyte estrecha a cadena ancha, dado un estado
(función) |
|
|
convierte una cadena ancha a cadena de caracteres multibyte estrecha
(función) |
|
|
[virtual]
|
convierte una cadena de
ExternT
a
InternT
, como cuando se lee desde un archivo
(función miembro protegida virtual de
std::codecvt<InternT,ExternT,StateT>
)
|
|
Documentación C
para
mbstowcs
|
|