关于字符串和函数的问题.

Lon*_*rts 3 c++ string

我正在玩一些C++,只是为了好玩.我刚刚开始使用函数,我想根据用户是否尝试乘以1来制作一个if语句,该语句将转到不同的函数.

这是代码:

//Test för att se om jag förstår funktioner

#include <iostream>
#include <string>

using namespace std; 

//Deklarerar variblar som jag ska använda
int a,b,x;
string s;

//Skriver ut funktionen för att multiplicera
int multi(int a, int b) 
{
  x = a * b; 

  return x;
}

int ans(void)  
{
  using std::string; 

  string s = "Lol";

  return s; 
}

//Samlar in värde från användaren, skickar den till funtktionen "multi" som multiplicerar den, sedan skickar den tillbaks den till main via return. Main visar sedan
//resultatet för användaren

int main( void ) 
{

  using std::cout;
  using std::cin;
  using std::string; 

  cout << "Ange ett nummber som du vill multiplicera: \n\n"; 
  cin >> a;
  cout << "\n";
  cout << "Ange det andra nu: \n"; 
  cin >> b; 
  cout << "\n";


 if(a == 1) 
 {
  multi(a,b); 

  cout << "Svaret är: " << x << "\n";
 }
 else
 {
   ans;
   cout << s;
 }

  return 0; 

}
Run Code Online (Sandbox Code Playgroud)

唯一发生的事情是它返回消息;

adrian @ adrian-HP-ProBook-4525s:〜/ Documents/code $ g ++ test10.cpp -o test test10.cpp:在函数'int ans()'中:test10.cpp:26:10:错误:无法转换'std :: string {aka std :: basic_string}'到'int'作为回报

它是如此奇怪,因为从我所能看到的一切,我不是想把它转换回来,是吗?

//问候

Alo*_*ave 6

   int ans(void)  
   ^^^^^
Run Code Online (Sandbox Code Playgroud)

您正在试图返回s它是std::string在函数体中,但你的函数签名表示函数返回的int.因此,编译器试图转换std::stringint这是一个无效的转换,因此错误.

它应该是:

std::string ans(void)
^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)