我正在慢慢地尝试自己学习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);
如果没有更多,它只会让我更加困惑。
答案 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);