je dois convertir un QChar à un wchar_tQChar wchar_t
J'ai essayé ce qui suit:
#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;
}
Oh, et avant que quelqu'un suggère d'utiliser la fonction .toWCharArray (tableau wchar_t *), je J'ai essayé et ça fait essentiellement la même chose que ci-dessus et ne transfère pas les caractères comme il se doit.
est Ci-dessous le code pour que si vous ne me croyez pas:
#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;
}
S'il vous plaît aider, je suis à ce problème simple jours. Je préfèrerais ne pas utiliser du tout wchar_t, mais malheureusement un pointeur de ce type est nécessaire dans une fonction tierce pour contrôler une pompe en utilisant les commandes série RS232.
Merci. EDIT: Pour exécuter ce code, vous aurez besoin des bibliothèques QT, vous pouvez les obtenir en téléchargeant QT creator et pour obtenir la sortie dans la console, vous devrez ajouter la commande "CONFIG + = console" à l '. fichier pro (dans le créateur QT) ou aux définitions personnalisées sous propriétés si vous utilisez un projet netbeans.
EDIT:
Merci à Vlad ci-dessous pour sa réponse correcte:
Voici le code mis à jour pour faire la même chose mais en utilisant un char transfert par la méthode char et en se rappelant d'ajouter la terminaison nulle.
#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;
}
Comme Vlad l'a souligné ci-dessous, votre code est fondamentalement correct à l'exception de l'utilisation de cout pour la sortie de chaîne wchar_t. Changer le dernier cout à wcout vous donnera le résultat correct. –