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

时间:2013-02-05 11:39:31

标签: c++ string pointers

我想在函数声明中将string例如"Tedt2.csv"&value进行比较,LPWSTR。这是我的基本代码:

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

我测试了很多像

这样的approches
if (wcsstr(&value, L"Tedt2.csv") == 0)
{
   wprintf(L"%ws: %ws\n", keyName, value);
}

但它总是进入if

是的,有人能帮帮我吗?它应该是微不足道的,但我有点迷失C ++。我要做一个概念证明。

2 个答案:

答案 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