C++編程中用put輸出單個(gè)字符和cin輸入流的用法
用C++流成員函數(shù)put輸出單個(gè)字符
在程序中一般用cout和插入運(yùn)算符“<<”實(shí)現(xiàn)輸出,cout流在內(nèi)存中有相應(yīng)的緩沖區(qū)。有時(shí)用戶還有特殊的輸出要求,例如只輸出一個(gè)字符。ostream類除了提供上面介紹過的用于格式控制的成員函數(shù)外,還提供了專用于輸出單個(gè)字符的成員函數(shù)put。如:
cout.put('a');
調(diào)用該函數(shù)的結(jié)果是在屏幕上顯示一個(gè)字符a。put函數(shù)的參數(shù)可以是字符或字符的ASCII代碼(也可以是一個(gè)整型表達(dá)式)。如
cout.put(65 + 32);
也顯示字符a,因?yàn)?7是字符a的ASCII代碼。
可以在一個(gè)語句中連續(xù)調(diào)用put函數(shù)。如:
cout.put(71).put(79).put(79). put(68).put('\n');
在屏幕上顯示GOOD。
[例] 有一個(gè)字符串"BASIC",要求把它們按相反的順序輸出。
#include <iostream> using namespace std; int main( ) { char *a="BASIC";//字符指針指向'B' for(int i=4;i>=0;i--) cout.put(*(a+i)); //從最后一個(gè)字符開始輸出 cout.put('\n'); return 0; }
運(yùn)行時(shí)在屏幕上輸出:
CISAB
除了使用cout.put函數(shù)輸出一個(gè)字符外,還可以用putchar函數(shù)輸出一個(gè)字符。putchar函數(shù)是C語言中使用的,在stdio.h頭文件中定義。C++保留了這個(gè)函數(shù),在iostream頭文件中定義。
[例] 也可以改用putchar函數(shù)實(shí)現(xiàn)。
#include <iostream> //也可以用#include <stdio.h>,同時(shí)不要下一行 using namespace std; int main( ) { char *a="BASIC"; for(int i=4;i>=0;i--) putchar(*(a+i)); putchar('\n'); }
運(yùn)行結(jié)果與前相同。
成員函數(shù)put不僅可以用cout流對(duì)象來調(diào)用,而且也可以用ostream類的其他流對(duì)象調(diào)用。
C++ cin輸入流詳解
標(biāo)準(zhǔn)輸入流是從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)流向程序的數(shù)據(jù)。在頭文件iostream.h中定義了cin、cout、cerr、clog 4個(gè)流對(duì)象(詳情請(qǐng)查看:與C++輸入輸出有關(guān)的類和對(duì)象),cin是輸入流,cout、cerr、clog是輸出流。
cin是istream類的對(duì)象,它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)獲取數(shù)據(jù),程序中的變量通過流提取符“>>”從流中提取數(shù)據(jù)。流提取符“>>”從流中提取數(shù)據(jù)時(shí)通常跳過輸入流中的空格、tab鍵、換行符等空白字符。
注意:只有在輸入完數(shù)據(jù)再按回車鍵后,該行數(shù)據(jù)才被送入鍵盤緩沖區(qū),形成輸入流,提取運(yùn)算符“>>”才能從中提取數(shù)據(jù)。需要注意保證從流中讀取數(shù)據(jù)能正常進(jìn)行。
例如:
int a,b; cin>>a>>b;
若從鍵盤上輸入
21 abc↙
變量a從輸入流中提取整數(shù)21,提取操作成功,此時(shí)cin流處于正常狀態(tài)。但在變量b準(zhǔn)備提取一個(gè)整數(shù)時(shí),遇到了字母a,顯然提取操作失敗了,此時(shí),cin流被置為出錯(cuò)狀態(tài)。只有在正常狀態(tài)時(shí),才能從輸入流中提取數(shù)據(jù)。
當(dāng)遇到無效字符或遇到文件結(jié)束符(不是換行符,是文件中的數(shù)據(jù)已讀完)時(shí),輸入流cin就處于出錯(cuò)狀態(tài),即無法正常提取數(shù)據(jù)。此時(shí)對(duì)cin流的所有提取操作將終止。在 IBM PC及其兼容機(jī)中,以Ctrl + Z表示文件結(jié)束符。在UNIX和Macintosh系統(tǒng)中,以 Ctrl + D表示文件結(jié)束符。當(dāng)輸入流cin處于出錯(cuò)狀態(tài)時(shí),如果測(cè)試cin的值,可以發(fā)現(xiàn)它的值為false(假),即cin為0值。如果輸入流在正常狀態(tài),cin的值為true(真),即cin為 一個(gè)非0值??梢酝ㄟ^測(cè)試cin的值,判斷流對(duì)象是否處于正常狀態(tài)和提取操作是否成功。如:
if(!cn) //流cin處于出銷狀態(tài),無法正常提取數(shù)據(jù) cout<<"error";
[例] 通過測(cè)試cin的真值,判斷流對(duì)象是否處于正常狀態(tài)。
#include <iostream> using namespace std; int main( ) { float grade; cout<<"enter grade:"; while(cin>>grade)//能從cin流讀取數(shù)據(jù) { if(grade>=85) cout<<grade<<"GOOD!"<<endl; if(grade<60) cout<<grade<<"fail!"<<endl; cout<<"enter grade:"; } cout<<"The end."<<endl; return 0; }
流提取符“>>”不斷地從流中提取數(shù)據(jù)(每次提取一個(gè)浮點(diǎn)數(shù)),如果成功,就陚給 grade,此時(shí)cin為真,若不成功則cin為假。如果鍵入文件結(jié)束符,表示數(shù)據(jù)已完。
運(yùn)行情況如下:
enter grade: 67↙ enter grade: 89↙ 89 GOOD! enter grade: 56↙ 56 fail! enter grade: 100↙ 100 GOOD! enter grade: ^Z↙//鍵入文件結(jié)束符 The end.
在遇到文件結(jié)束符時(shí),程序結(jié)束。如果某次輸入的數(shù)據(jù)為
enter grade: 100/2↙
流提取符">>"提取100,賦給grade,進(jìn)行if語句的處理。然后再遇到"/",認(rèn)為是無效字符,cin返回0。循環(huán)結(jié)束,輸出"The end."。
在不同的C++系統(tǒng)下運(yùn)行此程序,在最后的處理上有些不同。以上是在GCC環(huán)境下運(yùn)行程序的結(jié)果,如果在VC++環(huán)境(筆者使用win7系統(tǒng))下運(yùn)行此程序,在鍵入Ctrl + Z 時(shí),需要敲擊兩次回車,程序才輸出"The end."。
欄 目:C語言
下一篇:簡(jiǎn)單介紹C++編程中派生類的析構(gòu)函數(shù)
本文標(biāo)題:C++編程中用put輸出單個(gè)字符和cin輸入流的用法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2694.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實(shí)現(xiàn)全排列算法的方法詳解
- 01-10c++中inline的用法分析
- 01-10用C++實(shí)現(xiàn)DBSCAN聚類算法
- 01-10全排列算法的非遞歸實(shí)現(xiàn)與遞歸實(shí)現(xiàn)的方法(C++)
- 01-10C++大數(shù)模板(推薦)
- 01-10淺談C/C++中的static與extern關(guān)鍵字的使用詳解
- 01-10深入C/C++浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式詳解
- 01-10深入理解C/C++混合編程


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?