打印到std :: ostream的时间

时间:2012-02-08 21:16:26

标签: c++ string time iostream cout

我刚刚开始阅读C ++教科书,但我在本章末尾解决其中一个编码问题时遇到了问题。这是一个问题:

编写一个程序,要求用户输入小时值和分钟值。该 然后main()函数应将这两个值传递给显示的类型void函数 以下示例中显示的格式中的两个值:

输入小时数:9
输入分钟数:28
时间:9:28

到目前为止,我的代码是:

#include <iostream>
using namespace std;
void time(int h, int m);

int main()
{
    int hour, min;

    cout << "enter the number of hours: ";
    cin >> hour;
    cout << "enter the number of minutes: ";
    cin >> min;

    string temp = time(hour, min);

    cout << temp;

    return 0;
}

void time(int h, int m)
{
    string clock;
    clock =
}

我现在在time(n, m)函数中做什么?

感谢。

4 个答案:

答案 0 :(得分:5)

您可以加入<iomanip>并设置field widthfill,以便正确打印9:01等时间。由于函数time应该只打印时间,因此可以省略构建和返回std::string。只需打印这些值:

void time(int hour, int min)
{
    using namespace std;
    cout << "Time: " << hour << ':' << setfill('0') << setw (2) << min << endl;
}

另请注意,在文件开头写using namespace std;被认为是不好的做法,因为它会导致某些用户定义的名称(类型,函数等)变得模糊不清。如果您想避免使用std::的前缀,请在小范围内使用using namespace std;,以便其他功能和其他文件不受影响。

答案 1 :(得分:1)

问题请求“一个类型的void函数,它以显示的格式显示两个值”,因此最简单和最正确的(因为它与所要求的匹配)解决方案是:

void time(int h, int m)
{
  cout << "Time: " << h << ":" << m << endl;
}

你的main()函数除了......之外什么都不做。

  // ... prompt for values as before, then:

  time(hour, min);

  return 0;
}

然后返回。

答案 2 :(得分:0)

第一次()应该返回一个std :: string。要在time()中格式化字符串,可以使用std :: ostringstream(header sstream)。

例如:

std::string time(int hour, int minutes)
{
   std::ostringstream oss;
   oss << hour << ":" << minutes;
   return oss.str();
}

编辑: 当然,您也可以直接在时间(..)函数内打印小时和分钟。或者您可以传递时间(..)函数也是一个流参数,让时间(..)在该流上打印出来。

答案 3 :(得分:0)

您在main中的代码假设timestring方法,问题是void。你的代码应该是:

#include <iostream> 
using namespace std; 
void time(int h, int m); 

int main() 
{ 
    int hour, min; 

    cout << "enter the number of hours: "; 
    cin >> hour; 
    cout << "enter the number of minutes: "; 
    cin >> min; 

    // Now pass to your time method.
    time(hour, min); 

    return 0; 
} 

void time(int h, int m)     
{     
    cout << "Time: " << h << ':' << m << endl;     
}
鲍勃是某人的叔叔。