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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cin函数的一点理解

發布時間:2024/4/11 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cin函数的一点理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

最近學習C++碰到這樣一個問題,while(cin>>s){},這樣的一個語句用什么樣的輸入能夠結束運行,到網上一查,大家給出的答案是ctrl+z,可以使該程序結束。但是,對于ctrl+z的作用和ctrl+z的實質是什么卻都沒有深刻的剖析。于是,翻書找到了些內容,認為自己解決了這個問題。現將學習到的內容記錄如下。首先,先了解一下,究竟能是一個輸入流停止工作的有哪些條件。

流的狀態

流有正常的狀態和錯誤的狀態。流只有在正常的狀態下,才能夠正常的工作。輸入流在正常的工作狀態下,才能夠執行讀的操作。ctrl+z,的作用其實就是讓流從正常的工作狀態,轉為不工作的其實也可以說是錯誤的工作狀態,所以才能讓while(cin>>s){}這樣的語句結束。

每個流對象都維護了一組條件標志,通過這些條件標志,可以監視流當前的狀態。可以調用下面四個謂詞成員函數:

1.如果一個流遇到文件結束符,eof返回true。

if(inOut.eof())

  //ok,都讀進來了

2.如果試圖做一個無效的操作,比如seeking重定位操作超出了文件尾。則bad()返回true。一般地,這表示該流由于某種未定義的方式而被破壞了。

3.如果操作不成功,如打開了一個文件流對象失敗或者遇到了一種無效的輸入格式,則fail()返回true

ifstream iFile(filename,ios_base::in);

if(iFile.fail())//不能打開

  error_message(........);

4.如果其他條件都不為true,則good()返回true。

if(inOut.good())

顯示地修改流對象的條件狀態有兩種方式。第一,使用clear()成員函數,可以把條件狀態復位到一個顯式的值。第二,使用setstate()成員函數。

測試

int main(){

cout<<cin<<endl;

string s;

while(cin>>s)

{

  cout<<s;

}

cout<<cin<<endl;

}

輸入 a enter b enter ctrl+z enter ctrl+z enter

運行結果:

00480F20

a b

00000000

ctrl+z究竟是什么

ctrl+z的作用是結束流,相當于eof。

總結

if(!cin)

流不能正常工作

else

流能正常工作

寫程序的時候,可能要注意這點。ctrl+z只是一個小插曲,但是能從中學到些東西,感覺到欣慰。。。。

轉載于:https://www.cnblogs.com/yxnchinahlj/archive/2011/03/21/1990649.html

總結

以上是生活随笔為你收集整理的cin函数的一点理解的全部內容,希望文章能夠幫你解決所遇到的問題。

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