我目前正在研究 C++ 中的字符串标记器,并且得到了一个奇怪的结果。
char *mystrtok(char *str, const char *delim)
{
char * LeftOver;
bool lastToken;
int i=0;
if(str != NULL)
{
LeftOver = str;
lastToken = false;
}else
{
str = LeftOver;
}
for(i = 0; str[i] != '\0'; i++)
{
for(int j=0; delim[j] != '\0'; j++)
{
//If I take out this line then it returns weird characters
cout << "\tstr[" << i <<" ]" << "=" << str[i] << endl;
if(LeftOver[i] == delim[j])
{
str[i] = '\0';
LeftOver = str + i+1;
return str;
}
}
}
if(LeftOver[i] == '\0' && !lastToken)
{
lastToken = true;
return str;
}
return NULL;
}
真正奇怪的是,如果我取出 cout,它会返回奇怪的字符。知道可能是什么原因造成的吗?
这是一个示例输出
//passed
"ls -l -a | wc -c >> myfile"
returned: ls
▒M.▒