打印到std::ostream的时间

printing time to std::ostream

本文关键字:时间 ostream 打印 std      更新时间:2023-10-16

我刚开始阅读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)函数中该怎么办?

谢谢。

您可以包含<iomanip>并设置字段宽度和填充,以便正确打印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;,这样其他函数和其他文件就不会受到影响。

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

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

然后,main()函数只需要执行。。。

  // ... prompt for values as before, then:
  time(hour, min);
  return 0;
}

然后返回。

First time()应该返回一个std::字符串。要格式化time()中的字符串,可以使用std::ostringstream(headersstream)。

例如:

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

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

您的代码主要假设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;     
}

鲍勃是某人的叔叔。