为什么cout输出内存地址不是字符串?



我想使用C ++来获取显示设备信息,但是cout给了我一些内存地址,如何获取字符串值? 输出如:00CFF4B4:00CFF5F8, 我正在使用Visual Studio 2019

#include <iostream>
#include <windows.h>
int main()
{
DISPLAY_DEVICE d;
d.cb = sizeof(DISPLAY_DEVICE);
int device_num = 0;
while (EnumDisplayDevices(NULL, device_num, &d, 0))
{
std::cout << d.DeviceName << ":" << d.DeviceID<<std::endl;
device_num++;
}
return 0;
}

我假设您使用的是W版本的DISPLAY_DEVICE(DISPLAY_DEVICEW(,我认为这是至少自Visual Studio 2015及更高版本以来的默认设置(编译器定义UNICODE(。

DISPLAY_DEVICEWDeviceNameDeviceID成员是WCHAR(wchar_t的宏(,因此您需要使用wcout而不是cout

std::wcout << d.DeviceName << ":" << d.DeviceID << std::endl;

最新更新