我刚刚编写了一个程序,使用指针对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.