【问题标题】:How to fix time presentation from 23:7:42 to 23:07:42如何将时间显示从 23:7:42 固定到 23:07:42
【发布时间】:2014-12-23 19:25:19
【问题描述】:

我应该把它设为string 吗?或者有一个简单的方法可以留在int

class TimeFixer {
private:
    int seconds=0;
    int minutes=0;
    int hours=0;


public:
    TimeFixer() {
        cout << "Enter hours,minutes,seconds: " ;
        cin >> hours;
        cin >> minutes;
        cin >> seconds;
    }
    void fixTime() {
        while (seconds >= 60) {
            seconds -= 60;
            minutes++;
        }
        while (minutes >= 60) {
            minutes -= 60;
            hours++;
        }
        while (hours >= 24) {
            hours -= 24;
        }
    }
    void displayTime() {
        cout << hours << ":" << minutes << ":" << seconds << endl;
    }
};
int main()
{
    int value = 0;
    cout << "Enter value: " ;
    cin >> value;
    TimeFixer *fix1;
    fix1 = new TimeFixer[value]();

    for (int i = 0 ; i < value ; i++) {
        fix1[i].fixTime();
        fix1[i].displayTime();
    }
    return 0;
}

【问题讨论】:

  • setw(2)setfill('0')?更多代码示例可能会有所帮助。
  • 有点不清楚你在问什么。字符串“23:7:42”从何而来?也许你应该向我们展示你的代码。
  • 我从用户那里获取时间为 INT 小时分钟等。
  • 那么@Niall 的评论才是正确的做法。
  • 以及如何在我的代码中修复它

标签: c++ time printing styles


【解决方案1】:

您也可以按照 Niall 的建议,使用 setfill () 和 setw() 函数根据您的要求显示数据。

即。您可以使用以下方式显示时间。

void displayTime() {
   cout << setfill ('0') << setw (2)<< hours << ":"  << setw (2)<< minutes << ":" << setw (2)<< seconds << endl ;
}

例如查看:http://codepad.org/NNL930Im

【讨论】:

  • 我认为你不需要在每个整数输出之前使用setfill('0')。在开始时只需一次就足够了。见http://codepad.org/FqHrTOxm
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2017-08-21
  • 2015-04-12
  • 2012-07-08
  • 2021-03-10
  • 1970-01-01
  • 2015-06-16
  • 2017-10-24
相关资源
最近更新 更多