比较字符串和LPWSTR类型的2个字符串

Compare 2 strings of type string and LPWSTR

本文关键字:字符串 2个 类型 LPWSTR 比较      更新时间:2023-10-16

我想比较string,例如"Tedt2.csv"&value,后者是函数声明中的LPWSTR。这是我工作的基本代码:

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

我测试了很多方法,比如

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

但它总是进入CCD_ 5。

有人能帮帮我吗?这应该很琐碎,但我有点迷上了C++。我必须做一个概念的证明。

wcsstr()在字符串中搜索字符串,不执行字符串比较。如果在lhs中未找到rhs,则返回NULL。在此上下文中的0将被转换为空指针,并且当在value中未找到"Tedt2.csv"时,将进入if分支。改为使用wcscmp()

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

或者使用提供operator==():的std::wstring

#include <string>
const std::wstring search_string(L"Tedt2.csv");
if (search_string == value)
{
}

并且不带&

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