[C con Clase] Problema con caracteres anchos

Paco jrpaco958 en gmail.com
Mar Ago 12 13:57:04 CEST 2008


A ver si me podéis ayudar ahora de nuevo.

Tengo esté código, el cual convierte de char a wchar_t en un constructor de una clase para cadenas y el resultado lo guarda en cf_cptr, hasta ahí todo correcto, no da errores, pero supongamos un ejemplo, pasamos la cadena "Hola mundo", el script sabe que la longitud son 10 caracteres, convierte 10 caracteres, pero la cadena resultante tiene 16 caracteres, al mostrarlo en un mensaje de alerta sale Hola mundo seguido de muchos cuadros.

¿Alguien sabe el por que?


wchar_t* 	cf_cptr;        ///< Puntero a la cadena de texto unicode
int 		cf_lenght;     ///< Longitud que tiene la cadena actual


[code]
CString::CString(const char * m_cad) // por ejemplo m_cad = "Hola mundo"
{
	// Longitud de la cadena
	cf_lenght = strlen(m_cad); // 10

	// Inicializamos la memoria para la cadena
	cf_cptr = NULL;
	// cf_cptr = (wchar_t *) malloc( cf_lenght*sizeof(wchar_t) );
	cf_cptr		= new wchar_t[cf_lenght]; // No da error en este proceso

	// Copiamos el contenido
	int x = mbstowcs( cf_cptr, m_cad, cf_lenght );

	CSystem::ShowMessage(L"Caracteres convertidos", Int2WChar(x), F_SYS_MSG_INFO); // Muestra 10
	CSystem::ShowMessage(L"Longitud antigua", Int2WChar(cf_lenght), F_SYS_MSG_INFO); // Muestra 10
	CSystem::ShowMessage(L"Longitud nueva", Int2WChar(wcslen(cf_cptr)), F_SYS_MSG_INFO); // Muestra 16
}
[/code]
_______________________________________
By jrpaco958


Más información sobre la lista de distribución Cconclase