QChar to wchar_t

Мне нужно преобразовать QChar в wchar_t

Я пробовал следующее:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {

    QString mystring = "Hello World\n";
    wchar_t myArray[mystring.size()];

    for (int x=0; x<mystring.size(); x++)
    {
        myArray[x] = mystring.at(x).toLatin1();
        cout << mystring.at(x).toLatin1(); // checks the char at index x (fine)
    }

    cout << "myArray : " << myArray << "\n"; // doesn't give me correct value
    return 0;
}

О, и прежде чем кто-то предложит использовать .toWCharArray (wchar_t * array) функцию, я пробовал ее, и она, по сути, делает то же самое, что и выше, и не передает символы должным образом.

Ниже приведен код для этого, если вы мне не верите:

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
QString mystring = "Hello World\n";
cout << mystring.toLatin1().data();
wchar_t mywcharArray[mystring.size()];
cout << "Mystring size : " << mystring.size() << "\n";
int length = -1;
length = mystring.toWCharArray(mywcharArray);
cout << "length : " << length;    
cout << mywcharArray;

return 0;

}

Пожалуйста, помогите, я ' Я уже несколько дней занимаюсь этой простой проблемой. В идеале я бы хотел вообще не использовать wchar_t, но, к сожалению, указатель на этот тип требуется в сторонней функции для управления насосом с помощью последовательных команд RS232.

Спасибо.

] РЕДАКТИРОВАТЬ: для запуска этого кода вам потребуются библиотеки QT, вы можете получить их, загрузив создатель QT и получив вывод в консоли, которую вы Мне нужно будет добавить команду «CONFIG + = console» в файл .pro (в создателе QT) или в пользовательские определения в свойствах, если используется проект netbeans.

РЕДАКТИРОВАТЬ:

Спасибо Владу ниже за его исправления ответ:

Вот обновленный код, делающий то же самое, но с использованием метода передачи char по char и не забывая добавлять нулевое завершение.

#include <cstdlib>
#include <QtGui/QApplication>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {


    QString mystring = "Hello World\n";
    wchar_t myArray[mystring.size()];

    for (int x=0; x<mystring.size(); x++)
    {
        myArray[x] = (wchar_t)mystring.at(x).toLatin1();
        cout << mystring.at(x).toLatin1();
    }

    myArray[mystring.size()-1] = '\0';  // Add null character to end of wchar array
    wcout << "myArray : " << myArray << "\n"; // use wcout to output wchar_t's

    return 0;
}
6
задан Zac 16 September 2010 в 14:20
поделиться