0

stringたとえば、関数の宣言に"Tedt2.csv"ある&valueものと比較したいと思います。LPWSTRこれは動作する私のベースコードです:

PWSTR   value = nullptr;
HRESULT hr    = properties->GetStringValue(key, &value);

私は次のような多くのアプローチをテストしました

if (wcsstr(&value, L"Tedt2.csv") == 0)
{
   wprintf(L"%ws: %ws\n", keyName, value);
}

しかし、それは常にに入るif

誰かが私を助けてくれますか?些細なことですが、C++では少し迷っています。概念実証を行う必要があります。

4

2 に答える 2

6

wcsstr()文字列内の文字列を検索しますが、文字列の比較は実行しません。NULLrhsがlhsに見つからない場合に返されます。この0コンテキストでは、はnullポインタに変換され、がに見つからないif場合はブランチが入力されます。代わりに使用してください:"Tedt2.csv"valuewcscmp()

if (wcscmp(value,  L"Tedt2.csv") == 0)
{      //  ^ remove & also
}

またはstd::wstringそれを提供する使用operator==()

#include <string>

const std::wstring search_string(L"Tedt2.csv");
if (search_string == value)
{
}
于 2013-02-05T11:48:06.577 に答える
3

&なし?

if (wcsstr(value, L"Tedt2.csv") == 0)

 ... make something when "Tedt2.csv" not appear in value

あなたvalueはポインタです。ポインターをポインターに渡しますが、ポインターが必要です

wchar_t *wcsstr(   wchar_t *str,   const wchar_t *strSearch ); // C++ only
于 2013-02-05T11:48:04.420 に答える