我正在尝试使用 PasswordFilter 函数,需要获取 Password 变量值,它是一个 PUNICODE_STRING,然后使用 regex_match 来匹配密码策略。
问题是 regex_match 无法识别 PUNICODE_STRING。
我能做什么?
最佳答案
存储为 LSA_UNICODE_STRING
(或其 typedef)的字符串可能不是空终止的,因此将 Buffer
指针传递给需要空终止字符串的函数(或 std::wstring
) 不保证安全。
相反,使用 Length
字段将其转换为 std::wstring
以指定字符串的长度:
PUNICODE_STRING pStringIn; // this comes from somewhere
std::wstring strOut(pStringIn->Buffer, pStringIn->Length / sizeof(wchar_t));
然后您可以使用 strOut.c_str()
或将其直接传递给接受 std::wstring
的函数。
关于c++ - 在 C++ 中将 PUNICODE_STRING 与 regex_match 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364272/