Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 比较string和LPWSTR类型的两个字符串_C++_String_Pointers - Fatal编程技术网

C++ 比较string和LPWSTR类型的两个字符串

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);

我想将一个字符串(例如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);
}
但它总是进入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)
{
}