¿Por qué Qt cambia el comportamiento de sscanf ()?

Me he dado cuenta, Qt (4.8) cambia el comportamiento desscanf(). Sin qtsscanf() Funciona como siempre, pero con, solo toma cadenas localizadas.

Aquí hay un ejemplo minimizado:

Sin Qt (plano C ++)
int main(int argc, char *argv[])
{
    float f;
    sscanf("0.83", "%f", &f);

    std::cout << f << "\t-->\t" << typeid("0.83").name() << std::endl;

    return 0;
}

Salida:

0.83    -->     A5_c

(La cadena dada es un 5xchar-array, resultado correcto

Con qt
int main(int argc, char *argv[])
{
    /*
     * This breaks sscanf() for the whole (!) project
     * and linked libraries too!
     */
    QApplication(argc, argv);

    float f;
    sscanf("0.83", "%f", &f);

    std::cout << f << "\t-->\t" << typeid("0.83").name() << std::endl;

    return 0;
}

Salida:

0       -->     A5_c

(La cuerda dada sigue siendo un 5xchar-registrar, pero el resultado es incorrecto)

Mientras0.83&nbsp;falla, usando0,83&nbsp;(mi formato local) funciona bien con Qt, pero falla sin Qt (comportamiento predeterminado). Como se muestratypeid(), no hayQString&nbsp;usado - solo arrays de caracteres C (++) antiguos. Por cierto, lo mismo le sucede astd::string.

Además de esto, usando unastd::stringstream&nbsp;sigue trabajando como siempre:

std::stringstream ss;
ss << "0.83"; // But the value into the stream
ss >> f;      // Get a float out of it

Resultado:

0.83

Y aquí viene la pregunta:&nbsp;¿Por qué son las cadenas char-array ysscanf()&nbsp;Llamadas afectadas por Qt? entiendo porqueQStringEstán localizados, pero rompiendosscanf()&nbsp;(y potencialmente otrosstdio.h&nbsp;funciones) me suena malvado.

Fondo:&nbsp;He vinculado una biblioteca (no Qt), que contiene unasscanf()&nbsp;En algún lugar profundo del código, a un proyecto Qt. Resultado: Algo de código falló en este proyecto, mientras que funcionó en cualquier otro lugar ... (tomó algún tiempo para encontrar la causa ...)