mbstowcs, mbstowcs_s
|
Definido en el encabezado
<stdlib.h>
|
||
| (1) | ||
| (hasta C99) | ||
| (desde C99) | ||
|
errno_t mbstowcs_s
(
size_t
*
restrict
retval,
wchar_t
*
restrict
dst,
rsize_t dstsz, const char * restrict src, rsize_t len ) ; |
(2) | (desde C11) |
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.
len
.
src
y
dst
se superponen, el comportamiento es indefinido
retval
dst
después de que
len
caracteres anchos fueron escritos, entonces
L
'
\0
'
se almacena en
dst[len]
, lo que significa que se escriben len+1 caracteres anchos en total
dst
es un puntero nulo, el número de caracteres anchos que se producirían se almacena en
*
retval
dstsz
src
y
dst
se superponen, el comportamiento no está especificado.
-
-
retvalosrces un puntero nulo -
dstszolenes mayor que RSIZE_MAX/sizeof(wchar_t) (a menos quedstsea nulo) -
dstszno es cero (a menos quedstsea nulo) -
No hay carácter nulo en los primeros
dstszcaracteres multibyte en el arreglosrcylenes mayor quedstsz(a menos quedstsea nulo)
-
-
Como con todas las funciones con verificación de límites,
mbstowcs_ssolo está garantizada que esté disponible si __STDC_LIB_EXT1__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT1__ como la constante entera 1 antes de incluir <stdlib.h> .
Contenidos |
Notas
En la mayoría de las implementaciones,
mbstowcs
actualiza un objeto estático global de tipo
mbstate_t
mientras procesa la cadena, y no puede ser llamado simultáneamente por dos hilos,
mbsrtowcs
debería ser utilizado 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 convirtieran. Un comportamiento similar es estándar para
mbstowcs_s
y para
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 |
| dstsz | - |
número máximo de caracteres anchos que serán escritos (tamaño del
dst
array)
|
| retval | - | puntero a un objeto size_t donde se almacenará el resultado |
Valor de retorno
dst
, se almacena en
*
retval
), distinto de cero en caso de error. En caso de violación de restricción en tiempo de ejecución, almacena
(
size_t
)
-
1
en
*
retval
(a menos que
retval
sea nulo) y establece
dst
[
0
]
a
L
'
\0
'
(a menos que
dst
sea nulo o
dstmax
sea cero o mayor que
RSIZE_MAX
)
Ejemplo
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <wchar.h> int main(void) { setlocale(LC_ALL, "en_US.utf8"); const char* mbstr = u8"z\u00df\u6c34\U0001F34C"; // or u8"zß水🍌" wchar_t wstr[5]; mbstowcs(wstr, mbstr, 5); wprintf(L"MB string: %s\n", mbstr); wprintf(L"Wide string: %ls\n", wstr); }
Salida:
MB string: zß水🍌 Wide string: zß水🍌
Referencias
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.22.8.1 La función mbstowcs (p: 359)
-
- K.3.6.5.1 La función mbstowcs_s (p: 611-612)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.20.8.1 La función mbstowcs (p: 323)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.10.8.1 La función mbstowcs
Véase también
|
(C95)
(C11)
|
convierte una cadena de caracteres multibyte a cadena ancha, con estado dado
(función) |
|
(C11)
|
convierte una cadena ancha a cadena de caracteres multibyte
(función) |
|
Documentación de C++
para
mbstowcs
|
|