亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++中getline()和get()的方法淺析

 更新時間:2016年10月26日 10:37:09   投稿:daisy  
大家都知道作為C++獲取輸入流的方法,幾乎在任何一本資料書上getline()方法和get()方法都作為入門級的方法進行講述,即便如此,筆者在學習C++的過程中仍經(jīng)常忘記這二者的使用要點,可能也有C++的初學者對這兩個方法還心存疑慮,本篇文章就這兩個方法的使用進行簡要闡述。

最原始的方法:

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

getline()方法:

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

      1. 從輸入流中讀取一個字符。

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

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

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

      5. 在name中結尾添加空字符,結束。

下面的代碼是使用原始方法和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,因為name1后面是空格,但是空格符是保留的,因為在name2中讀取的結果是” name2 name3”。

get()方法:

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

運行結果:

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

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

#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,回車,這時name1中讀取的是this is name1,接下來遇到回車就中斷了,在接下來name2讀取的時候輸入流就成為空行了,這就導致后面的cin.get()都沒有了效果,也就是上面程序總會一閃而過。因為get()方法碰到了中斷導致所有的輸入都中斷。碰都這種問題的解決方法是在讀取輸入流之前調(diào)用cin.clear()方法來恢復輸入。

#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;
}

總結

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

相關文章

  • C語言詳細講解if語句與switch語句的用法

    C語言詳細講解if語句與switch語句的用法

    用 if 語句可以構成分支結構,它根據(jù)給的條件進行判定,以決定執(zhí)行哪個分支程序段,C 語言中還有另外一種分支語句,就是 switch 語句
    2022-05-05
  • C++實現(xiàn)LeetCode(113.二叉樹路徑之和之二)

    C++實現(xiàn)LeetCode(113.二叉樹路徑之和之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(113.二叉樹路徑之和之二),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實現(xiàn)圖的遍歷算法(DFS,BFS)的示例代碼

    C++實現(xiàn)圖的遍歷算法(DFS,BFS)的示例代碼

    本文給大家?guī)淼氖菆D遍歷的算法,DFS(深度優(yōu)先遍歷),BFS(廣度優(yōu)先遍歷)。這兩個算法是比較重要和常用的算法,但是在圖中的實現(xiàn)只是最基本的操作,快跟隨小編一起學習一下吧
    2022-07-07
  • C++實現(xiàn)線性代數(shù)矩陣行簡化

    C++實現(xiàn)線性代數(shù)矩陣行簡化

    這篇文章主要為大家詳細介紹了C++實現(xiàn)線性代數(shù)矩陣行簡化,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 關于C++友元函數(shù)的實現(xiàn)講解

    關于C++友元函數(shù)的實現(xiàn)講解

    今天小編就為大家分享一篇關于關于C++友元函數(shù)的實現(xiàn)講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 詳解C語言之操作符

    詳解C語言之操作符

    這篇文章主要以圖文結合的方式為大家詳細介紹了C語言的操作符知識,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-11-11
  • c語言中回調(diào)函數(shù)的使用以及實際作用詳析

    c語言中回調(diào)函數(shù)的使用以及實際作用詳析

    回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù),如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù),這篇文章主要給大家介紹了關于c語言中回調(diào)函數(shù)的使用以及實際作用的相關資料,需要的朋友可以參考下
    2021-07-07
  • c++異常處理機制示例及詳細講解

    c++異常處理機制示例及詳細講解

    本篇文章主要是對c++異常處理機制示例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • 解析內(nèi)存對齊 Data alignment: Straighten up and fly right的詳解

    解析內(nèi)存對齊 Data alignment: Straighten up and fly right的詳解

    對于所有直接操作內(nèi)存的程序員來說,數(shù)據(jù)對齊都是很重要的問題.數(shù)據(jù)對齊對你的程序的表現(xiàn)甚至能否正常運行都會產(chǎn)生影響
    2013-05-05
  • C語言中的數(shù)組和指針匯編代碼分析實例

    C語言中的數(shù)組和指針匯編代碼分析實例

    這篇文章主要介紹了C語言中的數(shù)組和指針匯編代碼分析實例,本文用一則C語言例子來得到對應的匯編代碼,并一一注解每句匯編代碼的含義,需要的朋友可以參考下
    2015-06-06

最新評論