Мне нужно преобразовать 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 Creator, и чтобы получить вывод в консоли, вам нужно будет добавить команду «CONFIG + = console» в файл .pro (в QT Creator.) или к пользовательским определениям в свойствах при использовании проекта netbeans.
РЕДАКТИРОВАТЬ:
Спасибо Владу за правильный ответ:
Вот обновленный код для выполнениято же самое, но с использованием метода передачи символа 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;
}