我需要将 WCHAR[] 放入 std::cout ...它是从 Native Wifi API 回调传递的 PWLAN_CONNECTION_NOTIFICATION_DATA 的一部分。
我尝试了简单的 std::cout << var; 但它会打印出第一个字符的数字地址。比较 ( var == L"some text"
) 也不起作用。调试器返回预期值,但比较返回 0。如何将此数组转换为标准字符串(std::string)?
提前致谢
一些解决方案:
对于打印到cout
,您应该std::wcout
改用。
至于比较,我不太确定你的意思。
var
是 a wchar_t[]
,那么您正在比较两个指针。结果很可能是错误的,因为虽然字符串内容可能相同,但它们在物理上分配在不同的内存位置。答案是要么使用strcmp
比较 C 风格字符串(字符指针)之类的函数,要么使用 C++ 字符串类。operator==
通常返回 a bool
,而不是整数。所以它可以返回false
,但它不能返回0
......除非你自己创造了一些奇怪的重载。(只有当var
它是用户定义的类型时才有可能。假设 var 是 a wchar_t *
,var == L"some text"
进行指针比较。为了比较 var 指向的字符串,可以使用wcscmp
.
使用以下
#ifdef UNICODE
#define tcout wcout
#else
#define tcout cout
#endif