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

10-15 13:45