0

我是来自其他语言的 C++ 新手,并且查看示例此代码看起来应该可以工作

#include <iostream>
using namespace std;
main()
{
          string input = "";
          cout << "in: ";
          getline(cin, input);
          input_recv(input);
}

input_recv(input)
{
                 if (input == "hello"){
                    cout << "derp" << endl;
                    }
}

它不会让我使用函数 input_recv。它在我的 IDE 中给了我几个错误。一个是 `input_recv' 未声明(首先使用这个函数)。基本上我想要做的是让它使用函数响应输入。

编辑:

#include <iostream>
#include <string>
using namespace std;
void input_recv(string);
int main()
{
    while (1 == 1){
          string input = "";
          cout << "in: ";
          getline(cin, input);
          input_recv(input);
          cin.get();
    }
}

void input_recv(string input){
                 if (input == "hello"){
                    cout << "derp" << endl;
                    }
}

谢谢

4

5 回答 5

6

C++ 要求在使用函数之前声明该函数,因此如果将 input_recv 定义移到主函数上方,它将起作用。否则,您可以让程序保持原样,并在 main 上方添加一个前向声明,如下所示:

void input_recv(string);
int main()
{
...
}

void input_recv(string input)
{
...
}

编辑:这里还有一些其他错误以及其他评论指出。一、函数应该有指定的返回类型和参数类型。此外,在使用字符串类型之前,您需要 #include <string>.

于 2013-09-04T20:40:43.830 回答
0

先声明函数,并使用正确的函数原型,这里没有输入类型,没有返回类型......下面的例子,

 #include <iostream>
 #include <string>
 void input_recv(const std::string& input);

int main()
{
     std::string input = "";
     std::cout << "in: ";
     std::getline(std::cin, input);
     input_recv(input);

     return 0;
}

void input_recv(const std::string& input)
{
  if (input == "hello"){
     cout << "derp" << endl;
  }
}
于 2013-09-04T20:43:38.587 回答
0

C++ 是一种强类型语言。您必须使用显式类型声明变量和函数:

// forward declare your function
void input_recv(std::string input);
// alternatively
void input_recv_better(const std::string& input);

int main()
{
    std::string input;
    std::cout << "In:  ";
    std::getline(std::cin, input);
    input_recv(input);
    input_recv_better(input);
    return 0;
}

void input_recv(std::string input)
{
    if (input == "hello")
    {
        std::cout << "derp" << std::endl;
    }
}

void input_recv_better(const std::string& input)
{
    if (input == "hello")
    {
        std::cout << "derp!" << std::endl;
    }
}
于 2013-09-04T20:43:44.980 回答
0

此代码段肯定有一些问题,我将全部纠正,以便您观察差异:

#include <iostream>

using namespace std;

void input_recv(string input);

int main()
{
      string input = "";
      cout << "in: ";
      getline(cin, input);
      input_recv(input);
}

void input_recv(string input)
{
    if (input == "hello"){
        cout << "derp" << endl;
    }
}

我为您的函数添加了返回类型,为您的参数添加了数据类型,并为input_recv函数添加了前向声明,以便主函数知道它存在。

在通过尝试放弃某种标准培训来学习不良实践之前,您肯定会想拿起像 C++ Primer(针对 C++11 标准修订的最新版本)这样的书。

于 2013-09-04T20:45:21.730 回答
0
#include <iostream>

using namespace std;

void input_recv(string input)
{
                 if (input == "hello"){
                    cout << "derp" << endl;
                    }
}

int main()
{
  string input = "";
  cout << "in: ";
  getline(cin, input);
  input_recv(input);

   return 0;
}
于 2013-09-04T20:46:31.570 回答