【发布时间】:2019-05-04 13:33:50
【问题描述】:
我正在做一项作业,我的教授将这项任务作为作业的一部分交给了我们。我对 C++ 还是比较陌生,所以有什么帮助。我创建了这个函数,但是我不明白如果没有找到,他想如何返回一个空白字符串,但如果找到则返回一个整数。在没有重载函数的情况下,这是否可能?现在我只是将函数设置为整数类型,而不是返回空白字符串,而是返回 0。
这是作为分配的一部分的任务。如果您能解释您的解决方案,以便像我这样愚蠢的人能够理解,将不胜感激。
FindWord – 此成员函数将字符串作为参数并在 列表。如果列表为空或找不到,则返回空字符串值 (“”)。否则,它 返回索引的 int 值(例如数组元素编号,如 0、1、2 等)。 请记住 == 相等比较运算符适用于作为字符串处理的字符串 对象(而不是 char 数据元素)并且您不需要区分大小写。
编辑:这是我到目前为止的代码
int WordList::FindWord(string word){
if ((listSize = 0)){ // return -1 if no list exists;
return -1;
}
else {
for (int i =0;i<listSize;i++){ // run loop to check for word/
if (word == list[i]) // if word is found then return index
return i;
}
return -1; // return -1 if word is not found
}
}
【问题讨论】:
-
这是一个非常糟糕的分配...返回 -1 或
npos,好的,但是一个空白字符串? -
欢迎来到 Stack Overflow。请阅读the help pages,获取the SO tour,了解how to ask good questions,以及this question checklist。最后学习如何创建minimal reproducible example。
-
不,那是不可能的。要么你误解了你被要求做什么,要么你的老师是个白痴。我建议你问问你的老师,看不到 SO 能帮到你什么。
-
您可以查看
std::variant对此,尽管我同意上述评论者的观点,该作业不是教授 c++ 的最佳选择,因为它令人困惑。我建议返回一个无效的位置,例如 -1,以表示未找到该字符串。 -
在 c++ 中,每个函数都有签名 - 参数类型和返回值类型,因此您不能在一种情况下返回字符串,而在另一种情况下返回 int。话虽如此,您可以返回 std::any 之类的内容。你正在做的是(或看起来很像)std::find,所以你可以检查它是如何工作的(我假设如果你遵循标准库的“风格”,大多数人会发现更容易阅读你的代码)
标签: c++ return-type