3

特定の CComBSTR オブジェクト (のようなものY.StartsWith("X")) でプレフィックス チェックを実行する必要があるコードに遭遇しました。C++ は私にとって少しなじみがなく、私の最大の関心事は効率です。CComBSTR を変更する必要はまったくありません。私が望むのは、Xプレフィックスで始まるかどうかについてブール値を返すことだけです。

CComBSTR Membersの下の API にリストされている演算子を見ると、==、>、< などの非常に基本的な比較が可能です。これを解決する方法について 2 つのアイデアがあります (以下にリスト)。ただし、これを行うための最も効率的/最も簡単な方法について、私は深く理解していません。私が完全にベースから外れている場合は、お知らせください。

  1. BSRTToArrayを使用して配列を作成し、最初の n 個のインデックスを反復処理して、特定のプレフィックスがあるかどうかを確認します。
  2. CComBSTR から BSTR を取得し、BSTR でいくつかの比較を行います (これを行う方法はまだわかっていません)。
4

2 に答える 2

7

wcsncmp限られた数の開始文字を比較します:

BOOL StartsWith(BSTR sValue, const WCHAR* pszSubValue)
{
    if(!sValue)
        return FALSE;
    return wcsncmp(sValue, pszSubValue, wcslen(pszSubValue)) == 0;
}
于 2013-01-28T07:49:17.443 に答える