[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