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

时间:2011-11-07 17:37:57

标签: 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; 

}

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

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'作为回报​​

这太奇怪了,因为从我所能看到的一切,我并没有试图将它转换回来,是吗?

//此致

5 个答案:

答案 0 :(得分:6)

   int ans(void)  
   ^^^^^

您正在尝试在函数体中返回s std::string,但您的函数签名表示函数返回int。因此,编译器会尝试将std::string转换为int,这是无效的转换,因此也就是错误。

应该是:

std::string ans(void)
^^^^^^^^^^^

答案 1 :(得分:3)

int ans(...)返回s,这是一个字符串

答案 2 :(得分:3)

问题在于:

int ans(void) // The function is declared to return int
{
  using std::string; 

  string s = "Lol";

  return s; // It tries to return s, which is a string
}

答案 3 :(得分:2)

您正在返回一个字符串,而返回类型的函数是Integer

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

  string s = "Lol";

  return s; 
}

答案 4 :(得分:0)

你还要避免使用全局变量:

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