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

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

提前致谢

有帮助吗?

解决方案

假设var是wchar_t *var == L"some text"执行指针比较。为了比较var指向的字符串,请使用wcscmp

等函数

其他提示

一些解决方案:

  • 改为写入 std::wcout
  • 转变:
    • 标准方式,使用 std::codecvt
    • Win32方式,使用WideCharToMultibyte

用于打印至 cout, ,你应该使用 std::wcout 反而。

至于比较,我不太明白你的意思。

  • 如果 var 是一个 wchar_t[], ,那么您正在比较两个指针。结果很可能是假的,因为虽然字符串内容可能相同,但它们在物理上分配在不同的内存位置。答案是使用类似的函数 strcmp 它比较 C 风格的字符串(字符指针),或使用 C++ 字符串类。
  • operator== 通常返回一个 bool, ,不是整数。所以可以返回 false, ,但无法返回 0...除非你自己创造了一些奇怪的超载。(这只有在以下情况下才有可能 var 是用户定义的类型。

使用以下

#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top