c++ - 如何将 BSTR 与 c/c++ 中的字符串进行比较?

标签 c++ windows com activex

wprintf(L"Selecting Audio Input Device: %s\n", 
                            varName.bstrVal);

if(0 == strcmp(varName.bstrVal, "IP Camera [JPEG/MJPEG]"))...

以上报道:

error C2664: 'strcmp' : cannot convert parameter 1 from 'BSTR' to 'const char *'

最佳答案

您必须改用 wcscmp:

if(0 == wcscmp(varName.bstrVal, L"IP Camera [JPEG/MJPEG]"))
{
}

这是一个description of the BSTR data type ,它有一个长度前缀和一个真正的字符串部分,它只是一个 WCHAR 字符数组。它还具有 2 个 NULL 终止符。

唯一需要注意的是 BSTR 数据类型可以在字符串部分包含嵌入的 NULL,因此 wcscmp 仅在 BSTR 不包含嵌入的 NULL 的情况下起作用(这可能是大多数情况)。

关于c++ - 如何将 BSTR 与 c/c++ 中的字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3700772/

相关文章:

c++ - QObject::connect 没有匹配函数

windows - 各种 Windows 版本附带的 Kernel32.dll 版本列表?

c++ - 在没有 MFC 或 ATL 的情况下,如何在 C++ 中找到 Office 传出 COM 接口(interface)的 IID?

com - 做COM时是否需要在C#4中调用Marshal.ReleaseComObject?

c++ - 在 OpenGL 中绘制像素

c++ - 卸载与回滚期间的 MSI 自定义操作

Python - 在 Windows 中获取进程名称、CPU、内存使用情况和峰值内存使用情况

windows - 在 Windows 下克隆 git repo 时,我得到 "error: unable to create file <file>... (Is a directory)"

c++ - 转换 DirectX 接口(interface)

c++ - 三元运算符的动态指针引用数组返回值异常