青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用鏈接

留言簿(8)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜


1、使用原始的cin進行輸入
      如果程序要使用循環來讀取來自鍵盤的文本輸入,則必須有辦法知道何時停止讀取。如何知道這一點呢?一種方法使選擇某個特殊字符——有時被稱為哨兵字符(sentinel character),將其作為停止標記。
      下面程序,遇到#字符時停止讀取輸入。該程序計算讀取的字符數,并回顯這些字符,即在屏幕上顯示讀取的字符。按下鍵盤上的鍵不能自動將字符顯示到屏幕上,程序必須通過回顯輸入字符來完成這項工作。通常,這種任務由操作系統處理。在這個程序中,操作系統和測試程序都回顯輸入。運行完畢后,該程序報告處理的總字符數

#include "stdafx.h"
#include 
<iostream>
using namespace std;
int main(int argc, char* argv[])
{
    
char ch;
    
int count=0;    //use basic input
    cout<<"Enter characters; enter # to quit:\n";
    cin
>>ch;    //get a character
    while(ch!='#')    //test the character
    {
        cout
<<ch;    //echo the character
        ++count;    //count hte character
        cin>>ch;    //get the next character
    }

    cout
<<endl<<count<<" characters read\n";
    
return 0;
    
//該程序忽略空白字符
}
      程序說明:請注意該程序的結構。該程序在循環之前讀取第一個輸入字符,這樣循環可以測試第一個字符。因為第一個字符可能是#。
      為什么該程序省略了空格呢?原因在cin。讀取char值時,與讀取其他基本類型一樣,cin將忽略空格和換行符。因此輸入中的空格沒有被回顯,也沒有被包括在計數內。
      更為復雜的是,發送給cin的輸入被緩沖。這意味著只有在用戶按下回車鍵后,他輸入的內容才會被發送給程序。這就是在運行該程序時,可以在#后面輸入字符的原因。按下回車鍵后,整個字符序列將被發送給程序,但程序在遇到#字符后將結束對輸入的處理。

2、使用cin.get(char)進行補救
      通常,逐個字符讀取輸入的程序需要檢查每個字符,包括空格、制表符和換行符。cin所屬的istream類(在iostream中定義)包含一個能夠滿足這種要求的成員函數。具體地說,成員函數cin.get(ch)讀取輸入中的下一個字符(即使它是空格),并將其賦給變量ch。使用這個函數調用替換cin>>ch,可以修補第一個程序的問題。
      
#include "stdafx.h"
#include 
<iostream>
using namespace std;
int main(int argc, char* argv[])
{
    
char ch;
    
int count=0;    
    cout
<<"Enter characters; enter # to quit:\n";
    cin.
get(ch);    
    
while(ch!='#')    //test the character
    {
        cout
<<ch;    
        
++count;    
        cin.
get(ch);    
    }

    cout
<<endl<<count<<" characters read\n";
    
return 0;
}
      該程序回顯了每個字符,并將全部字符計算在內,其中包括空格。輸入仍被緩沖,因此輸入的字符個數仍可能比最終到達程序的要多。
      如果熟悉C語言,可能以為這個程序存在嚴重的錯誤。cin.get(ch)調用將一個值放在ch變量中,這意味著將修改該變量的值。在C語言中,要修改變量的值,必須將變量的地址傳遞給函數。但上面程序中,調用cin.get()時,傳遞的是ch,而不是&ch。在C語言中,這樣的代碼無效,但在C++中有效,只要函數將參數聲明為引用即可。引用是C++中的一種新類型。頭文件iostream將cin.get(ch)的參數聲明為引用類型,因此該函數可以修改其參數的值。

3、文件尾條件
      如果輸入來自文件,則可以使用一種功能更強大的技術——檢測文件尾(EOF)。C++輸入工具和操作系統協同工作,來檢測文件尾并將這種信息告知程序。讀取文件中的信息同cin和鍵盤輸入存在兩個相關的地方:首先,很多操作系統(包括UNIXMS-DOS)支持重定向,允許用文本替換鍵盤輸入。加入,假設在MS-DOS中有一個名為gofish.exe的可執行程序和一個名為fishtale的文本文件,則開一個在DOS提示符下輸入下面的命令:gofish <fishtale。這樣,程序將從fishtale文件(而不是鍵盤)獲取輸入。<符號式UNIXDOS上的重定向操作符。其次,很多操作系統都允許通過鍵盤來模擬文件尾條件。如果編程環境能夠檢測EOF,可以在程序中使用重定向的文件,也可以使用鍵盤輸入,并在鍵盤中輸入中模擬EOF。那么,檢測到EOF后,cin將兩位(eofbitfailbit)都設置為1。可以通過成員函數eof()來查看eofbit是否被設置;如果檢測到EOF,則cin.eof()將返回booltrue,否則返回false。同樣,如果eofbitfailbit被設置為1,則fail()成員函數返回true,否則返回false。注意,eof()fail()方法報告最近讀取的結果,也就是說,它們在事后報告,而不是預先報告。因此應將cin.eof()cin.fail()測試放在讀取后。fail(),相對于eof(),可用于更多的實現中。
#include "stdafx.h"
#include 
<iostream>
using namespace std;
int main(int argc, char* argv[])
{
    
char ch;
    
int count=0;    
    cout
<<"Enter characters; enter # to quit:\n";
    cin.
get(ch);    
    
while(cin.fail()==false)    //test for EOF
    {
        cout
<<ch;    
        
++count;    
        cin.
get(ch);    
    }

    cout
<<endl<<count<<" characters read\n";
    
return 0;
}

程序運行狀況:


      通過使用重定向,可以用該程序來顯示文本文件,并報告它所包含的字符數。
posted on 2010-02-06 20:48 煙皚 閱讀(963) 評論(0)  編輯 收藏 引用 所屬分類: C++ primer plus學習筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久婷婷综合激情| 一区二区三区你懂的| 久久全国免费视频| 亚洲精品免费在线| 老牛国产精品一区的观看方式| 久久精品国产久精国产思思| 亚洲精品乱码久久久久久久久| 亚洲欧美成人一区二区三区| 亚洲国产欧美在线| 国产午夜精品一区二区三区欧美| 亚洲一区二区在线播放| 一本色道婷婷久久欧美| 亚洲视频一区二区| 亚洲另类一区二区| 亚洲一区二区三区涩| 99视频精品免费观看| 蜜桃精品一区二区三区| 男女精品网站| 欧美大片91| 欧美日韩国产探花| 亚洲国产一区二区a毛片| 久久久精品网| 日韩视频不卡中文| 亚洲一二三四久久| 亚洲一卡久久| 狠狠干综合网| 亚洲日韩成人| 极品av少妇一区二区| 亚洲清纯自拍| 午夜在线电影亚洲一区| 亚洲视频一区在线| 亚洲成人资源| 亚洲永久在线观看| 久久这里有精品视频| 亚洲网站在线看| 久久久久国产成人精品亚洲午夜| 国产精品国产三级国产专播品爱网 | 香港久久久电影| 亚洲激情成人| 久久久亚洲影院你懂的| 日韩午夜电影| 欧美激情一区二区三区不卡| 久久婷婷久久| 亚洲人成毛片在线播放| 中日韩视频在线观看| 99ri日韩精品视频| 欧美日本精品| 开元免费观看欧美电视剧网站| 国产精品久久久久久久午夜片| 欧美国产激情| 日韩视频在线观看免费| 玖玖在线精品| 蜜桃av综合| 亚洲国产日韩欧美| 欧美搞黄网站| 99re66热这里只有精品3直播| 欧美激情1区2区| 尤物精品国产第一福利三区| 亚洲小说春色综合另类电影| 亚洲午夜小视频| 国产一区视频在线观看免费| 久久国产乱子精品免费女| 一区二区三区免费网站| 国产精品电影在线观看| 久久黄色网页| 亚洲人成高清| 久久久久国产一区二区三区四区| 久久久久久网| 亚洲精品123区| 国产主播一区二区三区| 久久久av毛片精品| 日韩视频精品在线| 久久久久综合| 亚洲欧美国产毛片在线| 影音先锋久久| 国产日韩欧美高清免费| 欧美日本亚洲视频| 久久中文字幕导航| 亚洲肉体裸体xxxx137| 乱码第一页成人| 久久久久久亚洲精品不卡4k岛国| 夜久久久久久| 亚洲国产第一页| 国产亚洲精品高潮| 欧美亚洲成人精品| 免费在线视频一区| 亚洲欧美综合另类中字| 亚洲一区久久久| 亚洲欧美日韩另类| 亚洲视频一二| 欧美一区二区三区四区在线观看地址| 一本大道久久a久久精品综合| 日韩系列在线| 夜夜爽www精品| 91久久中文字幕| 91久久精品一区| 亚洲色图在线视频| 欧美永久精品| 一区二区三区日韩欧美精品| 99精品视频免费在线观看| 亚洲精品一区久久久久久| 99成人在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区三区不卡视频在线观看| 在线亚洲一区观看| 在线视频中文亚洲| 午夜精品久久久久久久| 久久婷婷成人综合色| 麻豆精品一区二区综合av | 欧美日韩1区| 国产欧美精品一区二区三区介绍| 一区二区三区无毛| 亚洲影院色在线观看免费| 久久国产88| 亚洲视频一区在线观看| 欧美成人午夜视频| 国产在线一区二区三区四区| 国产精品99久久99久久久二8| 久久综合色天天久久综合图片| 国产精品久久久久久久久久久久| 欧美日韩不卡合集视频| 在线免费观看日本一区| 久久大逼视频| 午夜精品视频在线| 国产欧美在线看| 一本久久a久久免费精品不卡| 美女脱光内衣内裤视频久久影院| 亚洲黄色影院| 久久亚洲精品欧美| 国产一二三精品| 亚洲天堂av在线免费观看| 蜜臀av一级做a爰片久久 | 国产精品免费观看在线| 欧美h视频在线| 欧美日韩精品欧美日韩精品一 | 亚洲精品影视在线观看| 夜夜嗨av一区二区三区免费区| 米奇777在线欧美播放| 亚洲国产精品嫩草影院| 亚洲精品在线电影| 国产欧亚日韩视频| 美女视频黄免费的久久| 亚洲视频在线一区| 久久国产天堂福利天堂| 亚洲人成网站在线播| 欧美日韩国产免费观看| 久久久久久久999| 日韩视频不卡中文| 免费精品99久久国产综合精品| 99国产精品视频免费观看一公开| 国产日韩欧美不卡| 免费久久精品视频| 久久精品国产清高在天天线 | 欧美阿v一级看视频| 亚洲精品视频在线| 免费h精品视频在线播放| 亚洲深夜激情| 亚洲一区二区在线免费观看视频| 欧美99久久| 亚洲欧洲中文日韩久久av乱码| 国产人久久人人人人爽| 午夜精品久久久久99热蜜桃导演| 亚洲日本中文字幕| 狼人天天伊人久久| 久久深夜福利免费观看| 一区二区黄色| 最新国产拍偷乱拍精品| 国产伦精品一区二区三区视频黑人 | 一区二区三区国产精品| 久久人体大胆视频| 久久精品一区四区| 午夜在线电影亚洲一区| 亚洲在线一区| 亚洲影院免费观看| 亚洲一级在线| 亚洲精品影院在线观看| 亚洲精品婷婷| 国产精品久久久久久久久久免费 | 欧美激情视频在线播放 | 久久另类ts人妖一区二区| 亚洲综合不卡| 一区二区三区四区五区视频| 久热精品在线| 午夜精品久久久久| 亚洲欧美国产三级| 99香蕉国产精品偷在线观看| 亚洲三级影院| 亚洲高清资源| 伊人久久久大香线蕉综合直播 | 国产精品亚洲综合久久| 最新中文字幕亚洲| 99热这里只有精品8| 在线成人h网| 亚洲自啪免费| 一区二区三区国产在线| 午夜精品久久久久久久99水蜜桃| 国产精品自拍小视频| 欧美3dxxxxhd| 欧美日韩三级| 久久不射电影网|