在C ++中使用函数(void,double,int)

时间:2013-06-08 13:03:09

标签: c++ function void

我正在慢慢地尝试自己学习c ++并且使用函数卡住了。我确实找到了解决最初问题的方法,但我不知道为什么我不能按照我最初的意图去做。这是工作计划。

// ex 6, ch 2
#include <iostream> 
using namespace std; 

void time(int, int);
int main() 
{
int h, m; 
cout << "Enter the number of hours: "; 
cin >> h; 
cout << endl; 
cout << "Enter the number of minutes: "; 
cin >> m; 
cout << endl; 
time(h, m); 

cin.get();
cin.get();
return 0; 
} 

void time(int hr, int mn)
{
 cout << "The time is " << hr << ":" << mn;  
}

以下是我想要的方式。

// ex 6, ch 2
#include <iostream> 
using namespace std; 

void time(int, int);
int main() 
{
int h, m; 
cout << "Enter the number of hours: "; 
cin >> h; 
cout << endl; 
cout << "Enter the number of minutes: "; 
cin >> m; 
cout << endl; 
cout << "The time is " << time(h, m); 

cin.get();
cin.get();
return 0; 
} 

void time(int hr, int mn)
{
 cout << hr << ":" << mn;  
}

在我的脑海中,他们两个都会返回相同的东西,但我的编译器认为不是(我想知道为什么)。

编辑:出于某种奇怪的原因,似乎这样工作。

cout << "The time is "; 
time(h, m); 

如果没有更多,它只会让我更加困惑。

2 个答案:

答案 0 :(得分:3)

cout << "The time is " << time(h, m); 

time不会返回任何内容,但是在这种情况下向cout发送内容会要求它返回一个值(在这种情况下可能是一个字符串)与具有time函数的值直接致电cout

答案 1 :(得分:1)

您需要修改time - 函数以返回string。我正在使用stringstream将int转换为字符串。

#include <sstream>
...
string time(int, int);

...

string time(int hr, int mn)
{
    stringstream sstm;
    sstm << hr << ":" << mn;
    string result = sstm.str();
    return result;
}

现在您可以直接使用它,例如:

cout << "The time is " << time(h, m);