gpt4 book ai didi

c++ - 我怎样才能使它与 C++ 中的每个定界符一起工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:49 25 4
gpt4 key购买 nike

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

main() 中的打印循环:

while ((nextWord = tk.Next()) != NULL) {
cout << nextWord << endl;
}

最佳答案

最简单的方法就是改变你的

while (*pStart != delim)

类似于

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

或者,您可以使 delim 成为一个字符串,并创建一个函数来检查字符串中是否有一个字符:

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

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

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

关于c++ - 我怎样才能使它与 C++ 中的每个定界符一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com