2012-02-08 64 views
3

我剛剛開始閱讀C++教科書,並且在解決本章末尾的一個編碼問題時遇到了問題。這裏是問題:打印時間到std :: ostream

編寫一個程序,要求用戶輸入小時值和分鐘值。然後將 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)函數內?

謝謝。

+0

http://www.cplusplus。com/reference/clibrary/cstdio/printf/ – 2012-02-08 21:17:59

+7

請不要同時添加printfs和cout。堅持一個,最好在c + + – jglouie 2012-02-08 21:20:29

回答

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;,以便其他函數和其他文件不受影響。

+0

Cout約2位數分鐘?例如9:01會是9:1 – jglouie 2012-02-08 21:20:48

+0

好的音符。我編輯了我的答案。 – LihO 2012-02-08 21:29:29

+0

感謝您的幫助! – Jay 2012-02-08 21:31:02

0

第一次()應該返回一個std :: string。要在time()中設置字符串的格式,你可以使用std :: ostringstream(header sstream)。

如:

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

編輯: 當然,你也可以直接在時間(..)函數中打印小時和分鐘。或者你可以傳遞時間(..)函數也是一個流參數,讓時間(..)在該流上打印出來。

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

而鮑勃是某人的叔叔。

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

,然後返回。