C++ 比较string和LPWSTR类型的两个字符串
我想将一个字符串(例如Tedt2.csv)与函数声明中的LPWSTR&value进行比较。这是我的基本代码,可以工作:C++ 比较string和LPWSTR类型的两个字符串,c++,string,pointers,C++,String,Pointers,我想将一个字符串(例如Tedt2.csv)与函数声明中的LPWSTR&value进行比较。这是我的基本代码,可以工作: PWSTR value = nullptr; HRESULT hr = properties->GetStringValue(key, &value); 我测试了很多方法,比如 if (wcsstr(&value, L"Tedt2.csv") == 0) { wprintf(L"%ws: %ws\n", keyName, value);
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++。我必须做一个概念证明。没有&
if (wcsstr(value, L"Tedt2.csv") == 0)
... make something when "Tedt2.csv" not appear in value
您的值是指针。您正在将指针传递给指针,但需要一个指针
wchar_t *wcsstr( wchar_t *str, const wchar_t *strSearch ); // C++ only
在字符串中搜索字符串,它不执行字符串比较。如果在lhs中未找到rhs,则返回NULL。此上下文中的0将转换为空指针,如果在值中找不到Tedt2.csv,则将输入if分支。改用:
或使用提供运算符==:
这甚至可以编译吗?wcsstr在字符串中搜索字符串,它不执行字符串比较。@tenfour它编译是的,但每次都输入。最重要的是,在调用wcsstr时不应使用&value,而应使用value。@P.Sohm我将其添加到您的问题中,以便其他阅读它的人立即看到该信息。
if (wcscmp(value, L"Tedt2.csv") == 0)
{ // ^ remove & also
}
#include <string>
const std::wstring search_string(L"Tedt2.csv");
if (search_string == value)
{
}