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()在字符串中搜索字符串,它不执行字符串比较。NULL如果在 lhs 中找不到 rhs ,则返回。在0此上下文中的 将被转换为空指针,并且当在中找不到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 回答