如何修复时间演示从23:7:42到23:07:42

问题描述:

我应该使它成为string?或者有一个简单的方法来与int如何修复时间演示从23:7:42到23:07:42

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; 
} 
+2

'运输及工务局局长(2)'和'setfill( '0')'?更多的代码示例可能会有所帮助。 – Niall 2014-10-28 11:45:39

+2

这是有点不清楚你在问什么。字符串“23:7:42”从哪里来?也许你应该向我们展示你的代码。 – user763305 2014-10-28 11:47:16

+0

即时获得用户的时间INT小时分钟等 – TheNsn666 2014-10-28 11:57:23

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

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

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

例如图:http://codepad.org/NNL930Im

+0

谢谢你的工作很棒! – TheNsn666 2014-10-28 12:31:16

+0

我不认为你需要在每个整数输出之前使用'setfill('0')'。只要在开始时就足够了。参见[http://codepad.org/FqHrTOxm](http://codepad.org/FqHrTOxm)。 – 2014-10-28 13:19:42