我想在函数声明中将string
例如"Tedt2.csv"
与&value
进行比较,LPWSTR
。这是我的基本代码:
PWSTR value = nullptr;
HRESULT hr = properties->GetStringValue(key, &value);
我测试了很多像
这样的approchesif (wcsstr(&value, L"Tedt2.csv") == 0)
{
wprintf(L"%ws: %ws\n", keyName, value);
}
但它总是进入if
。
答案 0 :(得分:6)
wcsstr()
在字符串中搜索字符串,它不执行字符串比较。如果在lhs中找不到rhs,则返回NULL
。此上下文中的0
将转换为空指针,并且在if
中找不到"Tedt2.csv"
时将输入value
分支。请改用wcscmp()
:
if (wcscmp(value, L"Tedt2.csv") == 0)
{ // ^ remove & also
}
或使用提供operator==()
的{{3}}:
#include <string>
const std::wstring search_string(L"Tedt2.csv");
if (search_string == value)
{
}
答案 1 :(得分:3)
没有&amp; ?
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