[英]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.