日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 查看输入流中的下一个字符

發布時間:2025/3/12 c/c++ 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 查看输入流中的下一个字符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

peek() 是 istream 類的成員函數,它的原型是:

int peek();

此函數返回輸入流中的下一個字符,但是并不將該字符從輸入流中取走相當于只是看了一眼下一個字符,因此叫 peek。

cin.peek() 不會跳過輸入流中的空格、回車符。在輸入流已經結束的情況下,cin.peek() 返回 EOF。

在輸入數據的格式不同,需要預先判斷格式再決定如何輸入時,peek() 就能起到作用。

編寫一個日期格式轉換程序,輸入若干個日期,每行一個,要求全部轉換為“mm-dd-yyyy”格式輸出。輸入的日期格式可以是“2011.12.24”(中式格式),也可以是“Dec 24 2011”(西式格式)。要求該程序對于以下輸入數據:

Dec 3 1990 2011.2.3 458.12.1 Nov 4 1998 Feb 12 2011

輸出結果應為:

12-03-1990 02-03-2011 12-01-0458 11-04-1998 02-12-2011

輸入數據中的 Ctrl+Z 略去不寫,因為輸入數據也可能來自于文件。

編寫這個程序,如果輸入的是中式格式,就用 cin>>year(假設 year 是 int 類型變量)讀取年份,然后再讀取后面的內容;如果輸入是西式格式,就用 cin>>sMonth(假設 sMonth 是 string 類型對象)讀取月份,然后讀取后面的內容。

可是,如果沒有將數據從輸入流中讀取出來,就無法判斷輸入到底是哪種格式。即便用 cin.get() 讀取一個字符后再作判斷,也很不方便。例如,在輸入為2011.12.24的情況下,讀取第一個字符2后就知道是格式一,問題是輸入流中的已經被讀取了,剩下的表示年份的部分只有011,如何將這個011和前面讀取的2奏成一個整數 2011,也是頗費周折的事情。使用 peek() 函數很容易解決這個問題。

示例程序如下:

#include <iostream> #include <iomanip> #include <string> using namespace std; string Months[12] = { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug", "Sep","Oct","Nov","Dec" }; int main() {int c;while((c = cin.peek()) != EOF) { //取輸入流中的第一個字符進行查看int year,month,day;if(c >= 'A' && c <= 'Z') { //美國日期格式string sMonth;cin >> sMonth >> day >> year;for(int i = 0;i < 12; ++i) //查找月份if(sMonth == Months[i]) {month = i + 1;break;}}else { //中國日期格式cin >> year ;cin.ignore() >> month ; //用ignore跳過 "2011.12.3"中的'.'cin.ignore() >> day;}cin.ignore(); //跳過行末 '\n'cout<< setfill('0') << setw(2) << month ;//設置填充字符'\0',輸出寬度2cout << "-" << setw(2) << day << "-" << setw(4) << year << endl;}return 0; }

istream 還有一個成員函數 istream & putback(char c),可以將一個字符插入輸入流的最前面。對于上面的例題,也可以在用 get() 函數讀取一個字符并判斷是中式格式還是西式格式時,將剛剛讀取的字符再用 putback() 成員函數放回流中,然后再根據判斷結果進行不同方式的讀入。

總結

以上是生活随笔為你收集整理的C++ 查看输入流中的下一个字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。