string - 如何检查 CComBSTR 是否以特定前缀开头?

标签 string visual-c++ atl bstr

我遇到了一段代码,我需要对给定的 CComBSTR 对象(类似于 Y.StartsWith("X"))进行简单的前缀检查。 C++对我来说有点陌生,我最关心的是效率。我不需要以任何方式修改 CComBSTR。我只想返回一个 bool 值,判断它是否以 X 前缀开头。

查看 API 中 CComBSTR Members 下列出的运算符,它允许非常基本的比较,如 ==、>、< 等。我有两个关于如何尝试解决这个问题的想法(如下所列)。但是,我对最有效/最简单的方法是什么没有深入的了解。如果我完全偏离基地,请告诉我。

  1. 使用BSRTToArray创建一个数组,然后我在其中迭代前 n 个索引以检查它是否具有特定前缀。
  2. 从 CComBSTR 获取 BSTR 并在 BSTR 上做一些比较(还没有弄清楚如何做)

最佳答案

wcsncmp将为您比较有限数量的起始字符:

BOOL StartsWith(BSTR sValue, const WCHAR* pszSubValue)
{
    if(!sValue)
        return FALSE;
    return wcsncmp(sValue, pszSubValue, wcslen(pszSubValue)) == 0;
}

关于string - 如何检查 CComBSTR 是否以特定前缀开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14557545/

相关文章:

c++ - IE Explore 11 < c++ ATL COM Browser Helper Object (Add-on) 替换 DOM 中的文本

r - 评估 R 中字符串指向的函数

PHP 将字符串转换为 float / double

c++ - MFC 无法从 DLL 加载 Dlg

c++ - 铸件内的符号

c++ - DCOM 服务器调试

java - 在Java中按第一个值对String中的数字序列进行排序

android - Kotlin 中的字符串数组

c++ - std::map 用于小型稀疏集合

javascript - 如何将 JavaScript array() 转换为 ATL/COM 数组?