[eside-ghost] Duda de wxString
Cymo
gcymoril en gmail.com
Vie Sep 2 16:22:43 CEST 2005
> Como prueba chorra de concepto, si cambias la línea anterior por esto:
>
> wprintf("%s",filename.c_str());
>
Por comentar:
sería wprintf(L"%ls", filename.c_str());
La L para que la cadena de formato sea widechar (es wprintf) y sigue
siendo necesario poner "%ls". Si mal no entendí al leer la docu,
wprintf recibe una cadena con formateadores, siendo esta cadena wide
char (wchar_t *).
En todo caso: wprintf(filename.c_str()); (cosa que no recomiendo hacer
a nadie, puesto que si c_str() se evaluase a una cadena con símbolos %
... :D tendríamos un fallo de seguridad mu gordo :D (por ejemplo, si
como nombre del fichero ponemos algo como: Hola%n%n%n
En todo caso, he descubierto algo curioso con todo esto: si en el
programa usas printf, las llamadas a wprintf dejan de funcionar, y si
usas wprintf, son las printf las que ya no funcionan
¿será cosa de mis librerías? xD
cymo en Thunder:~$ cat prueba.cpp
#include <stdio.h>
#include <wchar.h>
int main()
{
//printf("printf::Hola mundo!%ls\n", L" (mundial) "); // [1]
wprintf(L"wprintf::Hola mundo!%ls\n", L" (mundial) "); // [2]
printf("printf2:Hola mundo!%ls\n", L" (mundial) "); // [3]
return 0;
}
cymo en Thunder:~$
Veréis: si descomento la línea [1], entonces obtengo
cymo en Thunder:~$ ./prueba
printf::Hola mundo! (mundial)
printf2:Hola mundo! (mundial)
pero si la dejo comentada:
cymo en Thunder:~$ ./prueba
wprintf::Hola mundo! (mundial)
¿?
Sospecho que el problema puede tener que ver con el enlazador, o bien
con la función fwide y stdout, pero no tengo tiempo de mirar ahora a
qué se debe exactamente.
Agures!
Más información sobre la lista de distribución eside-ghost