gpt4 book ai didi

c++ - 如何从 WCHAR 数组中获取子字符串

转载 作者:行者123 更新时间:2023-11-30 04:16:45 24 4
gpt4 key购买 nike

我有一个WCHAR数组是这样的

WCHAR Path[256];

所以我在我的函数 getpath(Path) 中传递了这个数组,它像这样填充路径中的值:

//device/systemName/

所以我只想从上面的字符串中获取设备。

我的代码在这里:

   WCHAR *pDevName;

int i = 0;
int j = 0;

while(Path[i] != NULL){
if(0 ==(wcscmp(Path, L"/")))
{

//i = i + 2;
++i;
continue;
}

else
{
pDevName[j] = Path[i];

++i;
++j;
if (0 == wcscmp(Path, L"/")){
break;
}
}

我的代码正在编译,但它没有从 WCHAR 数组返回给我的设备。它返回 //devicename/systemName/,它来自 pDevName

我对我在 wcscmp() 上的比较有疑问。所以我的问题是如何将/与剩余的 wchar 数组值进行比较。

最佳答案

wcscmp 比较一个字符串,而不是一个字符。您还每次都将相同的地址传递给 wcscmp - Path,这意味着您所做的只是将整个字符串与“/”进行比较,这将始终失败.

如果你想测试单个字符,你可以直接比较它的值,例如:

WCHAR *pDevName;
// NB: I assume you are allocating pDevName and just left that out of the code
// for brevity.
int i = 0;
int j = 0;

while(Path[i] != L'\0'){
if(Path[i] == L'/')
{
++i;
continue;
}
else
{
// NB: you should check for overflow of pDevName here
pDevName[j++] = Path[i++];
if (Path[i] == L'/')
break;
}
}

关于c++ - 如何从 WCHAR 数组中获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17563044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com