Мы переносим приложение из 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?Есть ли другие способы сделать это?