我目前正在使用 C++ 修改 Windows 7 的凭据提供程序。 Windows SDK 需要使用 PWSTR。
我遇到了一个问题,用户名有时作为 DOMAIN\username 传递,有时作为 domain.tld\username 传递,有时只是用户名。我想做的是从中提取用户名,只取斜杠后的子字符串。
我是 C++ 的新手,没有一个字符串函数似乎可以与 PWSTR 一起使用。我已经尝试了几次到 wchar_t* 的转换,但仍然没有任何效果。
如何实现?
TIA
最佳答案
你可以这样做:
PWSTR GetUserName(PWSTR pszUser)
{
PWSTR pszLastSlash = wcsrchr(pszUser, L'\\');
return pszLastSlash ? pszLastSlash + 1 : pszUser;
}
请注意,这不会进行单独的内存分配 - 您返回的是指向字符串中最后一个斜线之后开始的部分的指针。如果您要执行正确的“子字符串”操作,就像您可能会在更高级别的对象中看到的那样(而不是仅仅采用 len - i
从偏移量 i
开始),您会必须复制一份(或以某种方式跟踪您只考虑更小的长度)。
关于c++ - 如何从 C++ 中的 PWSTR 中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11587546/