1

我正在慢慢尝试自己学习 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); 

如果仅此而已,那只会让我更加困惑。

4

2 回答 2

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

time不返回任何东西,但是cout在这种情况下发送一些东西需要它返回一个值(在这种情况下可能是一个字符串)而不是直接time调用函数cout

于 2013-06-08T13:05:46.400 回答
1

您需要编辑time-function 以返回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); 
于 2013-06-08T13:08:34.290 回答