Есть ли эквивалентный swprintf в QString? - PullRequest
0 голосов
/ 21 января 2019

Мы переносим приложение из windows (CE) -ARM в Linux-ARM.

Мы используем Qt4.8.Обычно wchar составляет 4 байта в среде Linux, но в Windows (CE) это 2 байта.Из-за проблем с памятью мы перестроили gcc и glibc как 2 байта wchar.

swprintf не работает должным образом для 2 байтов.Мы обнаружили, что QString может правильно обрабатывать 2 байта wchar.

Ниже приведено определение функции wsprintf.Это функция-оболочка для Windows wsprintf для Linux.

    **Function definition**
    int wsprintf(wchar_t* f_wszOutData, wchar_t* f_wszformat, ...)  
    {
        va_list args;
        va_start(args,f_wszFormat);
        QString l_QszOutBuffer;
        QString l_QszFormat=QString::fromWCharArray(f_wszFormat);
        QByteArray l_QByteArray=l_QszFormat.toAscii();
        l_QszOutBuffer.vsprintf(l_QByteArray.data(),args);
        l_QszOutBuffer.toWCharArray(f_wszOutData);
        va_end(args);
        return l_QszOutBuffer.length(); 
    } 

    **Function Call**
    wchar_t l_wszOutput[200];
    wsprintf(l_wszOutput,L"%d %lf %s %ls", 78,89.90,"Hello world",L"world");

    **Output**
    78 89.900000 Hello world w

В настоящее время vStprintf () QString поддерживает char *, int, double и т. Д. Но wchar_t * не поддерживается.итак, последний параметр печатается неправильно.Есть ли поддержка форматирования wchar_t * в vStprintf () QString?Есть ли другие способы сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...