2010-06-28 6 views
0

j'ai une chaîne nommée aDrive = "H:/"QString :: fromWCharArray donne charracters étranges

je veux convertir cette chaîne en WCHAR alors utilisé comme ci-dessous

WCHAR Drive[4]; 

aDrive.toWCharArray (Drive) ; 

quand j'ai imprimé qDebug()<<QString::fromWCharArray (Drive);

il affiche comme "H:/???"

pourquoi je reçois les caractères de starnge à la fin ..

Merci pour votre temps

Répondre

4

QString::toWCharArray() ne met pas à zéro le tableau. Sans une longueur de tableau explicite avec QString::fromWCharArray(), il lira wchars jusqu'à ce qu'un zéro wchar soit lu. Dans ce cas, vous devrez ajouter le zéro wchar à la fin ou utiliser le paramètre de longueur explicite avec QString::fromWCharArray().

Comme toujours, le documentation est votre ami.

+0

Même lorsque j'ai mis à zéro ou utilisé le paramètre de longueur explicite, j'ai expérimenté un comportement étrange. Donc, pour tous ceux qui ont le même problème, essayez ceci: Utilisez 'std :: wstring' comme" storage "et appelez' c_str() 'si vous avez besoin de' const wchar_t * '. –

1

C'est juste ma conjecture.

Selon toWCharArray documentation: Cette fonction n'ajoute pas de caractère nul au tableau. La chaîne renvoyée n'était pas correctement terminée avec null. Lorsque vous l'avez imprimé, la partie de la mémoire après la mémoire allouée au groupe de lecteurs a également été imprimée jusqu'à ce qu'un octet nul soit atteint.