我目前正在用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/