簡體   English   中英

我使用cin時在控制台中換行

[英]new line in console when I use cin

我在C ++練習中遇到問題。

在練習中,我應該讓用戶輸入日期。

問題是,當我使用cin時,按Enter時控制台會跳下一行,這樣它就變成了這樣的樣子:

Enter date please: 12

/23

/2001

代替:2001/12/23

有人可以幫我解決這個問題。

您沒有說如何使用cin來讀取日期。 嘗試這個:

char ignored;
int day, month, year;
std::cin >> month >> ignored >> day >> ignored >> year;

然后,在運行程序時, 請不要在輸入完整日期之前按Enter鍵

羅伯(Robᵩ)有一個很好的答案,但我將對其進行擴展。 使用一個結構和一個重載的運算符,並檢查斜線。

struct date {
    int day;
    int month;
    int year;
};
std::istream& operator>>(std::istream& in, date& obj) {
    char ignored1, ignored2;
    in >> obj.day>> ignored1 >> obj.month>> ignored2 >> obj.year;
    if (ignored1!='/' || ignored2!='/')
        in.setstate(in.rdstate() | std::ios::badbit);
    return in;
}

如果您有用於文字流式傳輸的代碼,則可以簡化為:

std::istream& operator>>(std::istream& in, date& obj) {
    return in >> obj.day>> '/' >> obj.month>> '/' >> obj.year;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM