C++,WCHAR []到std :: cout和比较

mig*_*jek 1 c++ winapi wchar-t widechar

我需要把WCHAR []放到std :: cout ......它是从Native Wifi API回调传递的PWLAN_CONNECTION_NOTIFICATION_DATA的一部分.

我试过简单的std :: cout << var; 但它打印出第一个字符的数字地址.comparision(var == L"some text")也不起作用.调试器返回预期值,但比较返回0.如何将此数组转换为标准字符串(std :: string)?

提前致谢

Éri*_*ant 12

一些解决方案

  • 写信给std :: wcout
  • 兑换:
    • 标准方式,使用std :: codecvt
    • Win32方式,使用WideCharToMultibyte


jal*_*alf 8

对于打印到cout,您应该使用std::wcout.

至于比较,我不太清楚你的意思.

  • if var是a wchar_t[],那么你正在比较两个指针.结果很可能是错误的,因为虽然字符串内容可能相同,但它们在物理上分配在不同的内存位置.答案是要么使用strcmp比较C样式字符串(char指针)的函数,要么使用C++字符串类.
  • 并且operator==通常返回a bool,而不是整数.所以它可以返回false,但它不能返回0......除非你自己创造了一些奇怪的超载.(只有var用户定义的类型才有可能.