Me gustaría convertir una cadena a una cadena char*
wchar*
en C.Convertir char * a * WCHAR en C
he encontrado muchas respuestas, pero la mayoría de ellos son para C++. ¿Usted me podría ayudar?
Gracias.
Me gustaría convertir una cadena a una cadena char*
wchar*
en C.Convertir char * a * WCHAR en C
he encontrado muchas respuestas, pero la mayoría de ellos son para C++. ¿Usted me podría ayudar?
Gracias.
setlocale()
seguido de mbstowcs()
.
Esto está bien siempre que la entrada sea una cadena ANSI. – Benoit
@Benoit: Sí, obviamente hay más en la conversión de cadenas que llamar a una sola función. Pero no le di ningún detalle, ya que creo que esto es todo lo que está buscando el OP ... – Mehrdad
El problema viene de LdapDirectory, ¿entonces supongo que es un UTF8? – Crupuk
Pruebe swprintf
con la bandera %hs
.
Ejemplo:
wchar_t ws[100];
swprintf(ws, 100, L"%hs", "ansi string");
lo intentaré esta noche, por ahora no tengo acceso a un caparazón. Gracias – Crupuk
@NickDandoulakis Creo que esta respuesta podría ser muy útil, sin embargo descubrí que swprintf podría tener 2 interfaces posibles, ¿podría echar un vistazo? a esta pregunta? http://stackoverflow.com/q/17716763/2436175 – Antonio
@Antonio la interfaz que requiere la longitud del búfer es portátil. –
Si le sucede que tiene la availiable API de Windows, la función de conversión MultiByteToWideChar ofrece algunas conversión de cadenas configurable desde diferentes codificaciones UTF-16. Eso podría ser más apropiado si no te importa demasiado la portabilidad y no quieres saber exactamente cuáles son las implicaciones de las distintas configuraciones de configuración regional para la conversión de cadenas.
lo que estás buscando es
mbstowcs
funciona igual que la función de copia de char * a char *
pero en este caso va a guardar en un wchar_t *
si actualmente tiene caracteres ANSI. solo inserte un 0 ('\ 0') antes de cada char y vuélvalos a wchar_t *.
¿Cuál es la codificación original en su 'char *'? UTF8? ANSI? ¿Cuál es el 'sizeof (wchar)' en su sistema y en qué codificación se basa? UCS-2 (16 bits)? UCS-4 (32 bits)? – Benoit
@Benoit: Whoa ... Pensé que 'sizeof (wchar)' siempre era 2, ¿no? – Mehrdad
@Mehrdad: No es necesariamente 2. Está definido por la implementación. Si se programa en Windows, tiene un tamaño de dos bytes y contiene UTF-16, con doble wchar_t para parejas sustitutas. – Benoit