wcstok_s功能是如何实现的?
wcstok函数只有两个参数,以及第二次调用时第一个参数为'null'时如何保存字符串。
这两篇是如何返回指针,函数结束以及为什么保留临时内存,会返回一个以'\0'结尾的*wchar字符串;
这是我的错误代码:
TCHAR *mywtok(TCHAR *tszText, int x, TCHAR *tnext) {
TCHAR res[1005];
if (tszText == nullptr)
tszText = tnext;
int len = wcslen(tszText);
int rlen = 0;
for(int i = 0; i < len; i++){
if (tszText[i] != x) {
res[rlen++] = tszText[i];
}
else {
res[rlen] = '\0';
tnext = tszText + i;
return res;
}
}
res[rlen] = '\0';
tnext = nullptr;
return res;
}
wcstok_s 会忽略“”,例如“,,a”,它将返回“a”,如果我想要返回“”则返回“a”或“”,“”, “一个”。
最佳答案
应该在函数末尾修改 tnext 指向的指针,以将指针保存在最后一个匹配标记末尾后面的字符处,这样您就可以循环遍历所有匹配项,如下例所示:
https://msdn.microsoft.com/en-us/library/ftsafwz3.aspx
所以,为了回答你的问题,它是一个指向指针的指针,因为函数需要修改指针以允许循环。
关于c++ - 为什么wcstok_s函数的第三个参数是维度指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860983/