gpt4 book ai didi

c++ - 如何让一个函数有不同的返回类型? C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:44 24 4
gpt4 key购买 nike

我正在做一项作业,我的教授将这项任务作为作业的一部分交给了我们。我对 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
}
}

最佳答案

这可以通过 C++17 特性来完成 std::variantstd::get_if .

  • 搜索函数将返回 std::variant<int, std::string>
  • main使用 std::get_if以确定返回了哪些值。

std::get_if返回指向存储在指向变体中的值的指针或出错时的空指针。

#include <variant>
#include <string>
#include <iostream>
#include <list>

std::variant<int, std::string> strSearch(const std::string& searchStr, const std::list<std::string>& searchList)
{
int i = 0;
for(const auto& s: searchList) {
if(!s.find(searchStr))
return i;
i++;
}
return "";
}

int main()
{
std::list<std::string> strList = {"stack", "stackover", "stackoverflow"};
std::string str = "stackoverflow";
std::variant<int, std::string> v{strSearch(str, strList)};
if(std::get_if<int>(&v))
std::cout << "String found. Index in the List is:" << std::get<int>(v) << '\n';
else
std::cout << "String not found" << '\n';

str = "stackunderflow";
v = strSearch(str, strList);
if(std::get_if<int>(&v))
std::cout << "String found. Index in the List is:" << std::get<int>(v) << '\n';
else
std::cout << "String not found." << '\n';

}

现场观看here .

关于c++ - 如何让一个函数有不同的返回类型? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53590671/

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