C++編程頂用put輸入單個字符和cin輸出流的用法。本站提示廣大學習愛好者:(C++編程頂用put輸入單個字符和cin輸出流的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是C++編程頂用put輸入單個字符和cin輸出流的用法正文
用C++流成員函數put輸入單個字符
在法式中普通用cout和拔出運算符“<<”完成輸入,cout流在內存中有響應的緩沖區。有時用戶還有特別的輸入請求,例如只輸入一個字符。ostream類除供給下面引見過的用於格局掌握的成員函數外,還供給了公用於輸入單個字符的成員函數put。如:
cout.put('a');
挪用該函數的成果是在屏幕上顯示一個字符a。put函數的參數可所以字符或字符的ASCII代碼(也能夠是一個整型表達式)。如
cout.put(65 + 32);
也顯示字符a,由於97是字符a的ASCII代碼。
可以在一個語句中持續挪用put函數。如:
cout.put(71).put(79).put(79). put(68).put('\n');
在屏幕上顯示GOOD。
[例] 有一個字符串"BASIC",請求把它們按相反的次序輸入。
#include <iostream> using namespace std; int main( ) { char *a="BASIC";//字符指針指向'B' for(int i=4;i>=0;i--) cout.put(*(a+i)); //從最初一個字符開端輸入 cout.put('\n'); return 0; }
運轉時在屏幕上輸入:
CISAB
除應用cout.put函數輸入一個字符外,還可以用putchar函數輸入一個字符。putchar函數是C說話中應用的,在stdio.h頭文件中界說。C++保存了這個函數,在iostream頭文件中界說。
[例] 也能夠改用putchar函數完成。
#include <iostream> //也能夠用#include <stdio.h>,同時不要下一行 using namespace std; int main( ) { char *a="BASIC"; for(int i=4;i>=0;i--) putchar(*(a+i)); putchar('\n'); }
運轉成果與前雷同。
成員函數put不只可以用cout流對象來挪用,並且也能夠用ostream類的其他流對象挪用。
C++ cin輸出流詳解
尺度輸出流是從尺度輸出裝備(鍵盤)流向法式的數據。在頭文件iostream.h中界說了cin、cout、cerr、clog 4個流對象(概況請檢查:與C++輸出輸入有關的類和對象),cin是輸出流,cout、cerr、clog是輸入流。
cin是istream類的對象,它從尺度輸出裝備(鍵盤)獲得數據,法式中的變量經由過程流提取符“>>”從流中提取數據。流提取符“>>”從流中提取數據時平日跳過輸出流中的空格、tab鍵、換行符等空白字符。
留意:只要在輸出完數據再按回車鍵後,該行數據才被送入鍵盤緩沖區,構成輸出流,提取運算符“>>”能力從中提取數據。須要留意包管從流中讀取數據能正常停止。
例如:
int a,b; cin>>a>>b;
若從鍵盤上輸出
21 abc↙
變量a從輸出流中提取整數21,提取操作勝利,此時cin流處於正常狀況。但在變量b預備提取一個整數時,碰到了字母a,明顯提取操作掉敗了,此時,cin流被置為失足狀況。只要在正常狀況時,能力從輸出流中提取數據。
當碰到有效字符或碰到文件停止符(不是換行符,是文件中的數據已讀完)時,輸出流cin就處於失足狀況,即沒法正常提取數據。此時對cin流的一切提取操作將終止。在 IBM PC及其兼容機中,以Ctrl + Z表現文件停止符。在UNIX和Macintosh體系中,以 Ctrl + D表現文件停止符。當輸出流cin處於失足狀況時,假如測試cin的值,可以發明它的值為false(假),即cin為0值。假如輸出流在正常狀況,cin的值為true(真),即cin為 一個非0值。可以經由過程測試cin的值,斷定流對象能否處於正常狀況和提取操作能否勝利。如:
if(!cn) //流cin處於出銷狀況,沒法正常提取數據 cout<<"error";
[例] 經由過程測試cin的真值,斷定流對象能否處於正常狀況。
#include <iostream> using namespace std; int main( ) { float grade; cout<<"enter grade:"; while(cin>>grade)//能從cin流讀取數據 { if(grade>=85) cout<<grade<<"GOOD!"<<endl; if(grade<60) cout<<grade<<"fail!"<<endl; cout<<"enter grade:"; } cout<<"The end."<<endl; return 0; }
流提取符“>>”赓續地從流中提取數據(每次提取一個浮點數),假如勝利,就陚給 grade,此時cin為真,若不勝利則cin為假。假如鍵入文件停止符,表現數據已完。
運轉情形以下:
enter grade: 67↙ enter grade: 89↙ 89 GOOD! enter grade: 56↙ 56 fail! enter grade: 100↙ 100 GOOD! enter grade: ^Z↙//鍵入文件停止符 The end.
在碰到文件停止符時,法式停止。假如某次輸出的數據為
enter grade: 100/2↙
流提取符">>"提取100,賦給grade,停止if語句的處置。然後再碰到"/",以為是有效字符,cin前往0。輪回停止,輸入"The end."。
在分歧的C++體系下運轉此法式,在最初的處置上有些分歧。以上是在GCC情況下運轉法式的成果,假如在VC++情況(筆者應用win7體系)下運轉此法式,在鍵入Ctrl + Z 時,須要敲擊兩次回車,法式才輸入"The end."。