日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解析C++中g(shù)et()和getline()的區(qū)別(二)

接上一篇,解析C++中g(shù)et()和getline()的區(qū)別(一)

用getline()讀取輸入行

當(dāng)程序使用cin輸入時(shí),cin用空白符和行結(jié)束符將各個(gè)值分開。根據(jù)所需輸入的值,如需讀取一整行文本并且分開不同的域,則要使用getline成員函數(shù)

 
 
 
  1. getline(char*line,int size,char ='"n')  

第二個(gè)參數(shù)是本次讀取的最大字符個(gè)數(shù),第三個(gè)參數(shù)是分隔字符,作為讀取一行結(jié)束的標(biāo)志。

下面的函數(shù)從鍵盤讀取一行文本

 
 
 
  1. #include   
  2. using namespace std;  
  3. int main()  
  4. {   
  5. char str[128];  
  6. cin.getline(str,sizeof(str));  
  7. cout <<"you typed :" <
  8. }   
  9. #include   
  10. using namespace std;  
  11. int main()  
  12. {   
  13. char str[128];  
  14. cout<<"please input text and enter"<
  15. cin.getline(str,sizeof(str),'X');  
  16. cout <<"you typed first line:" <
  17. cin.getline(str,sizeof(str));  
  18. cout <<"sencond line :"<
  19. }  

在鍵入X之前,可以按一次到多次回車鍵,而并不結(jié)束第一個(gè)cin.getline()的輸入 。 第一個(gè)cin.getline()的輸入操作將以鍵入X后的第一個(gè)回車結(jié)束。

cin.getline() 與 cin>>str 的一個(gè)不同是,前者輸入一行,行中可以包含空格,后者卻以空格或回車作為字串結(jié)束,不包含空格。
用get()讀取一個(gè)字符

每次獲取一個(gè)字符:char istream:[img]editor/images/smilies/default/24.gif[/img]

 
 
 
  1. //get.cpp  
  2. #include   
  3. using namespace std;  
  4. int main()  
  5. {   
  6. char letter;  
  7. while(!cin.eof())  
  8. {   
  9. letter=cin.get();  
  10. letter=toupper(letter);  
  11. if (letter=='Y')  
  12. {  
  13. cout <<" "nY have been met "n";  
  14. break;  
  15. }   
  16. cout <
  17. }   
  18. }  

使用流成員函數(shù)的輸入操作不只限于鍵盤,上例程序可從重定向輸入中讀取。

$ ./get < get.cpp

letter =cin.get();與cin>>letter 都是從輸入流中取一個(gè)字符,但卻有區(qū)別,默認(rèn)情況下,cin>>letter將跳過任何在文件中發(fā)現(xiàn)的任何空白字符(空白字符指空格, tab,backspace,回車) .而cin.get不跳過空白字符。

用get()輸入一系列字符

 
 
 
  1. istream&istream::get(char*,int n,char delim='"n');  
  2. istream fin("abc.txt");  
  3. char buffer[80];  
  4. fin>>buffer; //不能保證輸入字符個(gè)數(shù)在80以內(nèi)。  
  5. 可以改寫為  
  6. istream fin("abc.txt");  
  7. char buffer[80];  
  8. fin.get(buffer,80); //保證輸入字符個(gè)數(shù)在80以內(nèi) 

getline()與get()第二種形式相同,唯一的例外是getline()從輸入流中輸入一系列字符時(shí)包括分隔符,而get()不包括分隔符。
put成員函數(shù),依次輸出字符。

 
 
 
  1. #include   
  2. using namespace std;  
  3. int main()  
  4. {   
  5. char letter;  
  6. for (letter='A'; letter<='Z';letter++)  
  7. cout.put(letter);   
  8. }  

cout<

 
 
 
  1. #include   
  2. #include   
  3. using namespace std;  
  4. int main()  
  5. {   
  6. ifstream in("put.cpp");  
  7. if (in.fail())  
  8. {   
  9. cerr<<"Error opening the file"n";  
  10. }   
  11. while (!in.eof( ) )  
  12. {  
  13. cout.put(in.get() );  
  14. }   
  15. }  

注意get()這種形勢它讀取了空白符(含回車符),不跳過任何的字符。與get(char * ,int n ,delim='"n')這種行式不同,他不包括分隔符delim.

  • cin<<的結(jié)束符有enter space tab
  • cin.get()的結(jié)束符只有enter,但會(huì)把enter放入隊(duì)列等待
  • cin.getline()的結(jié)束符也只有enter,但不會(huì)把enter放入隊(duì)列

如果用cin>>…做過輸入,在使用cin.getline之前,需要處理一下。處理的方法很多,你可以在cin>>…的輸入語句后加一個(gè)語句cin.get();。

希望通過以上內(nèi)容的介紹,能夠給你帶來幫助。


網(wǎng)頁名稱:解析C++中g(shù)et()和getline()的區(qū)別(二)
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/djsgege.html