El curiós es que el resultat abans de crear la
QApplication es correcte, però
després no ho es
$ LC_ALL=ca_ES ./test5
Before creating a QApplication
unit.h unitdescriptor.cpp -1
unitdescriptor.cpp unit.h 1
After creating a QApplication
unit.h unitdescriptor.cpp 4
unitdescriptor.cpp unit.h -4
però el més curiós encara es que si li dic que usi el locale C (sense cap
locale) no falla
Algú te la menor idea de perquè pot passar això?
La class QApplication com a part del procés d'inicialització deu trucar a
setlocale i canviar el paràmetre, entre d'altres, LC_COLLATE.
Veure[1], 'Changes that might affect runtime behavior'.
S'hauria de mirar que fa l'objecte aquest de les QT i en quines condicions
truca setlocale. Jo no tinc el codi font aquí i no puc mirar-ho.
De totes maneres, si fas servir un framework jo sóc partidari de fer servir
totes les seves eines i fer servir només la libc quan no hi hagui més opció.
Mira't també: QString::compare.
Espero que et sigui útil.
Jordi,
[1]
http://www.trolltech.com/developer/changes/changes-1.30.html
--
Jordi Mas i Hernàndez (homepage
http://www.softcatala.org/~jmas)
http://www.softcatala.org