常見的輸入問題:
1、直接用cin輸入(當然可以使用cout直接輸出):
1)string s;
cin >> s; //只接收回車鍵和空格前面所輸入的字元!!!!!
一旦輸入空格,cin將空格視為回車鍵,將會將後面的字元賦予後續有輸入cin函式的變數中,如下面的a,故一定確保輸入無空格!!
2)char a[10];
cin >> a; //同樣,只接收回車鍵和空格前面所輸入的字元!!!!!
一旦輸入空格,cin將空格視為回車鍵,將會將後面的字元賦予後續有輸入cin函式的變數中,如下面的a,故一定確保輸入無空格!!
同樣:(以下情況是一樣的)
char *b =a;
cin >> b;
2、使用空格為間隔輸入多個數字或字元(與scanf功能一樣)
1)int a,b,c;
cin >>a>>b>>c; //可以直接輸入a,b,c的值,中間用空格[n個也行]或者回車鍵間隔都可以!!!
2)char a, b;
cin>>a>>b; //可以直接輸入a,b的值,中間用空格[n個也行]或者回車鍵間隔都可以!!!但無法將空格字元賦予a,b
輸入函式
string str/line;
1)cin
cin >> line
//遇到回車鍵停止輸入,按空格輸出,
空格、回車等會被丟棄(這些還在緩衝區中,下次若用cin會自動丟棄),下次又會讀取流中剩下的內容。(對於要輸入乙個字串如果用cin>>input;這樣的方法來輸入乙個字串,則遇到空白換行,製表之類的,輸入都會停止)因為從流中讀入資料儲存到string中,string會遇到空格就停止錄入。這樣當我們輸入一行帶空格的字串,就要考慮getline函式,從流中讀入一行字串.
2)getline
string line;
getline(cin,line);//按回車鍵結束輸入
getline(cin,line,'#');
//輸入一串字元(不管多少個回車鍵),只要是在『#』號之 前的字元都會讀取並儲存
get與getline區別不是很大,但乙個明顯的區別是get遇到'\n '字元後便返回,這時 '\n '還在緩衝區中,所以下次讀出來的將是 '\n ',而getline遇到'\n '也返回,但它會把 '\n '從緩衝區裡移除掉,所以很多時候用getline方便些。
3)cin.get()
用法1: cin.get(字元變數名)可以用來接收字元
char ch;
ch = cin.get(); //只接受乙個字元
用法2:cin.get(字元陣列名,接收字元數目)用來接收一行字串,可以接收空格
char a[20];
cin.get(a,20);
注意:cin.get()會將回車鍵儲存在快取中,若後面還有cin.get()函式,則該函式會將快取中的回車鍵取出並賦予後面的輸入變數中,故,使用了cin.get()函式就一定後面要加getchar(),將回車鍵讀取並丟棄!!!!!!!!!
4)cin.getline()
//接受乙個字串可以接受空格並輸出
char m[20];
cin.getline(m,5);
輸入:jkjkjkjkkjkjkjkj
輸出:jklj //第5個字元預設新增'\0'
5)gets()【c++11已棄用!!!】
//接受乙個字元,可以接受空格並輸出,需包含標頭檔案#include
char ch;
gets(ch);
3)getchar()
getchar()是stdio.h中的庫函式,它的作用是從stdin流中讀入乙個字元,也就是說,如果stdin有資料的話不用輸入它就可以直接讀取了,第一次getchar()時,確實需要人工的輸入,但是如果你輸了多個字元,以後的getchar()再執行時就會直接從緩衝區中讀取了。
故一般用getchar()來清除快取中的字元;
4)輸入強行退出
ctrl + z 或輸入eof再按回車鍵
字串輸入輸出函式
while gets name null 可檢查檔案是否結尾 while ch getchar eof gets 讀取換行符並將其丟棄,fgets 把換行符存字串裡,但每次顯示字串會顯示換行符 不足之處 fgets 是為檔案i o而設計得,在處理鍵盤輸入時就不如gets 那麼方便。它需要第二個引數來...
字串輸入輸出函式
字串輸入首先要考慮的是儲存位置和儲存空間大小。例子 char name scanf s name 指標未初始化,可能指向記憶體中的任意地方,字串讀入的時候有可能覆蓋記憶體中的關鍵資料,造成程式或機器崩潰。char name 81 這種方式顯式宣告空間並進行初始化。scanf s str 函式讀入單個...
C 字串的輸入輸出
一 cin函式 適合單個字元的輸入,遇到空格 製表符和換行符自動停止讀入 同樣適合連續的不含空格 製表符和換行符的字串的輸入 includeusing namespace std void main 3 cin.getline 原形 getline char line,int size,char 結...