为什么wcstok_s函数的第三个参数是维度指针?
Why the thrid parameter of the wcstok_s function is a dimensional pointer?
wcstok_s功能是如何实现的?
wcstok函数只有两个参数,第一个参数是'null'.
,第二次调用时如何保存字符串
这两个是如何return一个指针并且函数完成以及为什么保留临时内存并且它会return一个以'\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] = '[=11=]';
tnext = tszText + i;
return res;
}
}
res[rlen] = '[=11=]';
tnext = nullptr;
return res;
}
wcstok_s是忽略"",比如",a,"它会return "a",如果我想要return "" 然后 "a" 或 "","","a".
tnext 指向的指针应该在函数的末尾进行修改,以在最后一个匹配的标记末尾后面的字符处保存一个指针,这样您就可以像本例中那样遍历所有匹配项:
https://msdn.microsoft.com/en-us/library/ftsafwz3.aspx
所以,要回答你的问题,它是一个指向指针的指针,因为函数需要修改指针指针以允许循环。
TCHAR *mywtok(TCHAR *tszText, TCHAR *ch, 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] != ch[0]) {
res[rlen++] = tszText[i];
}
else {
res[rlen] = '[=10=]';
*tnext = tszText + i+1;
wcscpy_s(tszText, wcslen(res)+1, res);
return tszText;
}
}
res[rlen] = '[=10=]';
tnext = nullptr;
wcscpy_s(tszText, wcslen(res)+1, res);
return tszText;
}
指针只是修改它的值,指向指针的指针可以使指针指向其他位置。
但是为什么wcstok函数只有两个参数也可以使用nullptr作为第一个参数呢?
wcstok_s功能是如何实现的?
wcstok函数只有两个参数,第一个参数是'null'.
,第二次调用时如何保存字符串这两个是如何return一个指针并且函数完成以及为什么保留临时内存并且它会return一个以'\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] = '[=11=]';
tnext = tszText + i;
return res;
}
}
res[rlen] = '[=11=]';
tnext = nullptr;
return res;
}
wcstok_s是忽略"",比如",a,"它会return "a",如果我想要return "" 然后 "a" 或 "","","a".
tnext 指向的指针应该在函数的末尾进行修改,以在最后一个匹配的标记末尾后面的字符处保存一个指针,这样您就可以像本例中那样遍历所有匹配项:
https://msdn.microsoft.com/en-us/library/ftsafwz3.aspx
所以,要回答你的问题,它是一个指向指针的指针,因为函数需要修改指针指针以允许循环。
TCHAR *mywtok(TCHAR *tszText, TCHAR *ch, 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] != ch[0]) {
res[rlen++] = tszText[i];
}
else {
res[rlen] = '[=10=]';
*tnext = tszText + i+1;
wcscpy_s(tszText, wcslen(res)+1, res);
return tszText;
}
}
res[rlen] = '[=10=]';
tnext = nullptr;
wcscpy_s(tszText, wcslen(res)+1, res);
return tszText;
}
指针只是修改它的值,指向指针的指针可以使指针指向其他位置。
但是为什么wcstok函数只有两个参数也可以使用nullptr作为第一个参数呢?