C++中cin.getline()和getline()函數的區別小結

前言

C++輸入過程中,是把輸入加載到緩沖區中,然後對緩沖區中的字符進行讀取。cin,cin.get(),cin.getline()三個函數雖然都可以進行舒服讀取,但是它們對緩沖區內的數據處理方法是不同的(如遇到【space】、【enter】的處理方法)。本文簡單介紹cin.getline()和getline()函數的區別。

cin.getline():

用法:接收一個字符串,可以接收空格並輸出,需包含#include< cstring >

char m[20];
cin.getline(m,5);
cout<<m<<endl;

輸入:jkljkljkl

輸出:jklj

接收5個字符到m中,其中最後一個為’\0’,所以隻看到4個字符輸出;

延伸:

1、cin.getline()實際上有三個參數,cin.getline(接收字符串的變量,接收字符個數,結束字符)

2、當第三個參數省略時,系統默認為’\0′

3、如果將例子中cin.getline()改為cin.getline(m,5,‘a’);當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk

getline():

getline()函數是一個比較常見的函數。根據名字直接望文生義,就知道這個函數是來完成讀入一行數據。

getline是C++標準庫函數;但不是C標準庫函數,getline會生成一個包含一串從輸入流讀入的字符的字符串,直到以下情況發生會導致生成的此字符串結束。1)到文件結束,2)遇到函數的定界符,3)輸入達到最大限度。

用法:接收一個字符串,可以接收空格並輸出,需包含#include< cstring >

string str;
getline(cin,str);
cout<<str<<endl;

輸入:jkljkljkl

輸出:jkljkljkl

輸入:jkl jfksldfj jklsjfl

輸出:jkl jfksldfj jklsjfl

總結

到此這篇關於C++中cin.getline()和getline()函數區別的文章就介紹到這瞭,更多相關C++ cin.getline()和getline()函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀:

    None Found