c++ - 在 C++ 中将 PUNICODE_STRING 与 regex_match 结合使用

标签 c++ winapi

我正在尝试使用 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/

相关文章:

c++ - 如何读取映射文件中的结构 vector ?

c++ - shell_notifyicon : an attempt was made to reference a token that does not exist, 没有显示图标

windows - 使用 Windows API 在 Rust 中创建弹出窗口

c# - 对旧的第三方控件使用 UI 自动化

c++ - 访问模板参数 T 的嵌套类型,即使 T 是指针

c++ - 为什么逻辑运算符的书面版本没有得到更广泛的使用?

c++ - 多次调用同一函数的返回值问题

c++ - 我如何散列 std::unordered_map::const_iterator?

c++ - 如何将一个类中声明的类的数据类型访问到另一个类(都在不同的翻译单元中)?

c++ - WaitForSingleObject 不起作用