Necesito convertir un QChar a un wchar_tQChar a wchar_t
He intentado lo siguiente:
#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;
}
Ah, y antes de que alguien sugiere utilizar el .toWCharArray (wchar_t * array) función, me Lo he intentado y esencialmente hace lo mismo que arriba y no transfiere los caracteres como debería.
A continuación se muestra el código para que si no me creen:
#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;
}
Por favor ayuda, he estado en este sencillo problema de días. Idealmente, me gustaría no utilizar wchar_t's pero, desafortunadamente, se requiere un puntero a este tipo en una función de terceros para controlar una bomba utilizando comandos serie RS232.
Gracias.
EDITAR: Para ejecutar este código necesitarás las bibliotecas de QT, puedes obtenerlas descargando el creador de QT y para obtener la salida en la consola tendrás que agregar el comando "CONFIG + = consola" al. pro file (en el creador de QT) o las definiciones personalizadas en propiedades si se usa un proyecto de netbeans.
EDIT:
Gracias a Vlad por debajo de su respuesta correcta:
Aquí está el código actualizado para hacer lo mismo pero utilizando un char por el método de transferencia de carbón y recordar añadir la terminación nula.
#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;
}
Al igual que Vlad señaló a continuación, su código es básicamente correcto, salvo el uso de cout para salida de cadena wchar_t. Cambiar el último comando a wcout le dará el resultado correcto. –