欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++中g(shù)etline()和get()的方法淺析

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

最原始的方法:

獲取輸入流最原始的形式就是cin>>(type) ,但是這種形式在碰到輸入中有空格、制表符或者換行符的時(shí)候就會中斷,值得注意的是中斷后空格、制表符或者換行符還繼續(xù)留在輸入流中。所以最簡單的,我們無法使用cin>>(type)的形式來讀取包含空格的字符串,比如輸入流中有一句:How are you?使用cin>>(type)是無法一次性讀取出來的,鑒于此,getline()方法和get()方法便誕生了。

getline()方法:

getline()方法讀取整行,他使用通過回車鍵輸入的換行符來中斷,getline()方法有兩個(gè)參數(shù),第一個(gè)參數(shù)用來存儲輸入行的數(shù)組的名稱,第二個(gè)參數(shù)用來表示讀取字符數(shù)的大小。getline(name,size)的方法的使用過程如下:

      1. 從輸入流中讀取一個(gè)字符。

      2. 如果讀取數(shù)量達(dá)到size-1,將該字符存儲到name數(shù)組,刪除輸入流中的該字符,跳轉(zhuǎn)到5。

      3. 如果該字符是換行符,刪除輸入流中的該字符,跳轉(zhuǎn)到5。

      4. 否則,將該字符存儲到name數(shù)組,刪除輸入流中的該字符,跳轉(zhuǎn)到1。

      5. 在name中結(jié)尾添加空字符,結(jié)束。

下面的代碼是使用原始方法和getline()方法的比較:

#include <iostream>
using namespace std;
int main()
{
 const int arrayLength = 20;
 char name1[arrayLength];
 char name2[arrayLength];
 cout<<"Enter your name1:\n";
 cin>>name1;
 cout<<"Enter your name2:\n";
 cin.getline(name2,arrayLength);
 cout<<"name1: "<<name1<<endl;
 cout<<"name2: "<<name2<<endl;
 cin.get();
 return 0;
}

分析:我們在輸入流中輸入name1 name2 name3,然后cin>>name1會讀取name1,因?yàn)閚ame1后面是空格,但是空格符是保留的,因?yàn)樵趎ame2中讀取的結(jié)果是” name2 name3”。

get()方法:

get()的參數(shù)和使用方法與getline()方法一致,唯一的區(qū)別就是get()方法在碰到換行符是不對輸入流中的換行符進(jìn)行刪除。這樣我們讀取輸入流的過程就會產(chǎn)生一個(gè)問題,怎么跳過換行符,幸運(yùn)的是get()方法提供了一種變體,cin.get()讀取下一個(gè)字符,包括換行符,下面的例子掩飾了cin.get(name,size)cin.get()的使用:

#include <iostream>
using namespace std;
int main()
{
 const int arrayLength = 40;
 char name1[arrayLength];
 cout<<"Enter your name1:\n";
 cin.get(name1,arrayLength);
 cin.get();
 cout<<"name1: "<<name1<<endl;
 cin.get();
 return 0;
}

運(yùn)行結(jié)果:

getline()和get()方法讀取空行的問題:

所謂空行,就是輸入流中只有換行符,當(dāng)getline()get()方法碰到空行時(shí),會設(shè)置失效位,使后面所有的輸入都中斷,我們分析下面的代碼:

#include <iostream>
using namespace std;
int main()
{
 const int arrayLength = 40;
 char name1[arrayLength];
 char name2[arrayLength];
 cout<<"Enter your name1:\n";
 cin.get(name1,arrayLength);
 cout<<"Enter your name2:\n";
 cin.get(name2,arrayLength);
 cout<<"name1: "<<name1<<endl;
 cout<<"name2: "<<name2<<endl;
 cin.get();
 cin.get();
 return 0;
}

比如我們輸入this is name1,回車,這時(shí)name1中讀取的是this is name1,接下來遇到回車就中斷了,在接下來name2讀取的時(shí)候輸入流就成為空行了,這就導(dǎo)致后面的cin.get()都沒有了效果,也就是上面程序總會一閃而過。因?yàn)?code>get()方法碰到了中斷導(dǎo)致所有的輸入都中斷。碰都這種問題的解決方法是在讀取輸入流之前調(diào)用cin.clear()方法來恢復(fù)輸入。

#include <iostream>
using namespace std;
int main()
{
 const int arrayLength = 40;
 char name1[arrayLength];
 char name2[arrayLength];
 cout<<"Enter your name1:\n";
 cin.get(name1,arrayLength);
 cout<<"Enter your name2:\n";
 cin.get(name2,arrayLength);
 cout<<"name1: "<<name1<<endl;
 cout<<"name2: "<<name2<<endl;
 cin.clear();
 cin.get();
 cin.get();
 return 0;
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用PHP能有所幫助,如果有疑問大家可以留言交流,謝謝大家對我們的支持。

上一篇:socket多人聊天程序C語言版(一)

欄    目:C語言

下一篇:socket多人聊天程序C語言版(二)

本文標(biāo)題:C++中g(shù)etline()和get()的方法淺析

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/2010.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有