/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Problema con wchar_t

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
mambonegro



Registrado: 24 Oct 2007
Mensajes: 2

MensajePublicado: 24/10/2007 11:39 am
Título: Problema con wchar_t

Hola a todos. Necesito algo de ayuda en lo siguiente:


wchar_t **m_pSzPrefixParticles;
m_pSzPrefixParticles = new wchar_t * [nLines];
wchar_t* szFirst = new wchar_t[nChars+2];

while (!feof(filename))
{
getUnicodeLine(filename,szFirst,nChars);
m_pSzPrefixParticles[cLinea] = new wchar_t[wcslen(szFirst)+1];
wcscpy(m_pSzPrefixParticles[cLinea], szFirst);

prefixesListOrdering(cLinea, nChars);
cLinea ++;
}


En este bucle se lee desde un fichero Unicode. GetUnicodeLine nos retorna es szFirst el contenido de una linea entera de texto. Bien, los valores que voy recogiendo en szFirst son correctos. Pero a la hora de pasar la cadena de texto a la estructura m_pSzPrefixParticles me escribe la dirección de memoria de szFirst, y no su contenido.

En este caso sería necesario pasar la cadena con *szFirst, pero entonces no me compila, y me suelta el siguiente error:
error C2664: 'wcscpy' : cannot convert parameter 2 from 'unsigned short' to 'const unsigned short *'

Alguien sabría decirme qué es lo que estoy haciendo mal?
Muchas gracias de antemano.
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 240
Ubicación: Cono Sur

MensajePublicado: 24/10/2007 1:09 pm
Título:

Hola

Qué compilador usas?

Un saludo
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 24/10/2007 1:34 pm
Título:

No se aprecian errores evidentes, salvo que se desconoce los argumentos formales de getUnicodeLine.

El error:
Código:
error C2664: 'wcscpy' : cannot convert parameter 2 from 'unsigned short' to 'const unsigned short *'

Se debe a que la función espera un puntero tal que: const wchar_t * y tú le pasas una indirección de dicho puntero, en otras palabras un objeto de tipo const wchar_t al aplicar el operador de indirección sobre szFirst


S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
mambonegro



Registrado: 24 Oct 2007
Mensajes: 2

MensajePublicado: 24/10/2007 2:34 pm
Título:

Bueno, parece que efectivamente es correcto. Haciendo printf's de esta manera:

wprintf(L"%s", m_pSzPrefixParticles[k]);

He podido ver que se van printando bien las lineas por pantalla, sin embargo en memoria (que es como estaba debugando) me escribe siempre el valor del puntero, no su contenido. No acabo de entender eso. El caso es que ya está solucionado, aunque si tenéis tiempo y ganas os agradecería el que pudierais explicármelo jeje.

Muchas gracias a los dos!!!
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com