Question

Je dois mettre WCHAR [] dans std :: cout ... C'est une partie de PWLAN_CONNECTION_NOTIFICATION_DATA transmise à partir du rappel de l'API Wifi native.

J'ai simplement essayé std :: cout < < var; mais il affiche l'adresse numérique du premier caractère. la comparaison (var == L"some text") ne fonctionne pas non plus. Le débogueur renvoie la valeur attendue, mais la comparaison renvoie 0. Comment puis-je convertir ce tableau en chaîne standard (std :: string)?

Merci d'avance

Était-ce utile?

La solution

En supposant que var est wchar_t *, var == L"some text" effectue une comparaison de pointeur. Pour comparer la chaîne pointée par var, utilisez une fonction telle que wcscmp.

Autres conseils

Quelques solutions:

  • Ecrivez à la place std :: wcout
  • Convertir:
    • La manière standard, en utilisant std :: codecvt
    • La manière Win32, en utilisant WideCharToMultibyte

Pour imprimer sur cout, vous devez utiliser std::wcout à la place.

En ce qui concerne la comparaison, je ne suis pas vraiment sûr de ce que vous voulez dire.

  • si var est un wchar_t[], vous comparez deux pointeurs. Et le résultat sera probablement faux, car même si le contenu de la chaîne peut être identique, il est physiquement alloué dans des emplacements mémoire différents. La solution consiste à utiliser une fonction telle que strcmp qui compare les chaînes de style C (pointeurs de caractères) ou à utiliser la classe de chaînes C ++.
  • et le operator== retourne généralement un bool, pas un entier. Donc, il peut retourner false, mais pas 0 ... sauf si vous avez créé une surcharge étrange vous-même. (et cela n'est possible que si <=> est un type défini par l'utilisateur.

utilisez ce qui suit

#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top