【问题标题】:printing time to std::ostream打印到 std::ostream 的时间
【发布时间】:2012-03-01 08:58:07
【问题描述】:

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

谢谢。

【问题讨论】:

标签: c++ string time iostream cout


【解决方案1】:

您可以包含&lt;iomanip&gt; 并设置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;,以免影响其他功能和其他文件。

【讨论】:

  • 2 位数的分钟呢?例如9:01 将是 9:1
【解决方案2】:

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

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

然后您的 main() 函数只需要...

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

  time(hour, min);

  return 0;
}

然后返回。

【讨论】:

    【解决方案3】:

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

    例如:

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

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

    【讨论】:

      【解决方案4】:

      您在 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;     
      }
      

      Bob 是某人的叔叔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-10
        • 2015-03-02
        • 1970-01-01
        • 2015-09-04
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        相关资源
        最近更新 更多