如何使用每个分隔符来完成这项工作? – C

我刚刚编写了一个程序,使用指针对char数组进行标记.该程序只需要使用空格作为分隔符.我刚刚把它打开并得到了充分的信任,但在转入之后我意识到这个程序只有在分隔符是一个空格时才有效.

我的问题是,我怎样才能使这个程序适用于每个分隔符?

我在下面给你看的函数返回一个指向char数组中下一个单词的指针.如果要使用所有分隔符,我认为我需要更改.

谢谢!

码:

char* StringTokenizer::Next(void)
{
pNextWord = pStart;

if (*pStart == '\0') { return NULL; }

while (*pStart != delim)
{
    pStart++;
}

if (*pStart == '\0') { return NULL; }

*pStart = '\0';
pStart++;

return pNextWord;
}

主打印循环:

// this loop will display the tokens
while ( ( nextWord = tk.Next ( ) ) != NULL )
{
    cout << nextWord << endl;
}

最佳答案 最简单的方法是改变你的

while (*pStart != delim)

喜欢的东西

while (*pStart != ' ' && *pStart != '\n' && *pStart != '\t')

或者,您可以对字符串进行delim,并创建一个函数来检查字符串中是否包含char:

bool isDelim(char c, const char *delim) {
   while (*delim) {
      if (*delim == c)
         return true;
      delim++;
   }
   return false;
}

while ( !isDelim(*pStart, " \n\t") ) 

或者,也许最好的解决方案是使用其中一个预构建函数来完成所有这些,例如strtok.

点赞