【问题标题】:Return string within function [closed]在函数内返回字符串[关闭]
【发布时间】:2020-04-30 00:18:40
【问题描述】:

我正在为学校做一个项目,我们得到了一个任务,我们必须在一个数组中显示所选元素的第一个和最后一个位置。我在一个单独的文件中使用 cout 函数测试了这段代码,它工作正常,但是当我尝试在函数中使用它以便稍后调用它时,我似乎无法返回有效值......任何修复?

void find_first_last(int* tab, int size, int element) {

    int first = 0, last = 0;
    for (int i = 1; i < size; i++) {
        if (tab[i] == element)
            first = i+1;
    }
    for (int i = size; i > 0; i--) {
        if (tab[i] == element)
            last = i + 1;  
    }
    stringstream ss;
    ss << "First:" << first << ", Last: " << last;
    string first_last = ss.str();

    return first_last;
}    

【问题讨论】:

  • 声明正确的返回类型? std::string find_first_last(int* tab, int size, int element)?我认为这是一个错字,所以只能评论。
  • 提问时请准确: 1. “我似乎无法返回有效值”:这是什么意思?你有编译错误吗?程序没有按照您预期的方式运行吗? 2. 显示一个完整的minimal reproducible example,它会产生意外的行为或错误,包括所有的源文件和头文件、main#includes 等等。

标签: c++ arrays string return


【解决方案1】:

void 表示您不会返回任何东西。如果你写string find_first_last,你应该可以返回一个字符串。

【讨论】:

    【解决方案2】:
    void find_first_last(int* tab, int size, int element) {
    

    这里C++(或C)函数的第一位是返回类型,在这种情况下void所以不返回任何值。

    所以要在头文件/源文件中返回std::string,您可以将其声明为:

    std::string find_first_last(int* tab, int size, int element) 
    

    如果您正在使用命名空间,则只需 string

    【讨论】:

      【解决方案3】:

      改变

      void find_first_last(int* tab, int size, int element)
      

      std::string find_first_last(int* tab, int size, int element)
      

      【讨论】:

        【解决方案4】:

        您的函数的返回类型是“void”,这意味着该函数不返回任何内容。将函数声明替换为您需要的数据类型(在您的情况下,它的字符串),一切都应该工作

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-18
          • 1970-01-01
          • 2022-01-18
          • 2013-05-13
          • 1970-01-01
          • 2021-09-27
          相关资源
          最近更新 更多