在C ++中使用PUNICODE_STRING和regex_match

时间:2015-09-02 22:37:28

标签: c++ winapi

我正在尝试使用PasswordFilter函数,并且需要获取密码变量值,这是一个PUNICODE_STRING,然后使用regex_match来匹配密码策略。

问题是regex_match无法识别PUNICODE_STRING。

我该怎么办?

1 个答案:

答案 0 :(得分:3)

存储为LSA_UNICODE_STRING(或其typedef)的字符串可能不会以空值终止,因此将Buffer指针传递给期望以null结尾的字符串(或std::wstring的函数})不保证是安全的。

而是使用std::wstring字段将其转换为Length以指定字符串的长度:

PUNICODE_STRING pStringIn; // this comes from somewhere
std::wstring strOut(pStringIn->Buffer, pStringIn->Length / sizeof(wchar_t));

然后,您可以使用strOut.c_str()或直接将其传递给接受std::wstring的函数。