我正在尝试使用PasswordFilter函数,并且需要获取密码变量值,这是一个PUNICODE_STRING,然后使用regex_match来匹配密码策略。
问题是regex_match无法识别PUNICODE_STRING。
我该怎么办?
答案 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
的函数。