C++ cin.getline及getline()用法詳解
下面先看下C++ cin.getline用法,具體內(nèi)容如下所示:
使用 C++ 字符數(shù)組與使用 string 對(duì)象還有另一種不同的方式,就是在處理它們時(shí)必須使用不同的函數(shù)集。例如,要讀取一行輸入,必須使用 cin.getline 而不是 getline 函數(shù)。這兩個(gè)的名字看起來很像,但它們是兩個(gè)不同的函數(shù),不可互換。
與 getline 一樣,cin.getline 允許讀取包含空格的字符串。它將繼續(xù)讀取,直到它讀取至最大指定的字符數(shù),或直到按下了回車鍵。以下是其用法示例:
cin.getline(sentence, 20);
getline 函數(shù)使用兩個(gè)用逗號(hào)分隔的參數(shù)。第一個(gè)參數(shù)是要存儲(chǔ)字符串的數(shù)組的名稱。第二個(gè)參數(shù)是數(shù)組的大小。當(dāng) cin.getline 語句執(zhí)行時(shí),cin 讀取的字符數(shù)將比該數(shù)字少一個(gè),為 null 終止符留出空間。這樣就不需要使用 setw 操作符或 width 函數(shù)。以上語句最多可讀取 19 個(gè)字符,null 終止符將自動(dòng)放在數(shù)組最后一個(gè)字符的后面。
下面的程序演示了 getline 函數(shù)的用法,它最多可以讀取 80 個(gè)字符:
// This program demonstrates cinT s getline function // to read a line of text into a C-string. #include <iostream>、 using namespace std; int main() { const int SIZE = 81; char sentence[SIZE]; cout << "Enter a sentence: "; cin.getline (sentence, SIZE); cout << "You entered " << sentence << endl; return 0; }
程序輸出結(jié)果:
Enter a sentence: To be, or not to be, that is the question.
You entered To be, or not to be, that is the question.
補(bǔ)充:C++ getline()的兩種用法
getline():用于讀入一整行的數(shù)據(jù)。在C++中,有兩種getline函數(shù)。第一種定義在頭文件<istream>中,是istream類的成員函數(shù);第二種定義在頭文件<string>中,是普通函數(shù)。
第一種: 在<istream>中的getline()函數(shù)有兩種重載形式:
istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim );
作用是: 從istream中讀取至多n個(gè)字符(包含結(jié)束標(biāo)記符)保存在s對(duì)應(yīng)的數(shù)組中。即使還沒讀夠n個(gè)字符,如果遇到delim標(biāo)識(shí)符或字?jǐn)?shù)達(dá)到限制,則讀取終止。delim標(biāo)識(shí)符會(huì)被讀取,但是不會(huì)被保存進(jìn)s對(duì)應(yīng)的數(shù)組中。注意,delim標(biāo)識(shí)符在指定最大字符數(shù)n的時(shí)候才有效。
#include <iostream> using namespace std; int main() { char name[256], wolds[256]; cout<<"Input your name: "; cin.getline(name,256); cout<<name<<endl; cout<<"Input your wolds: "; cin.getline(wolds,256,','); cout<<wolds<<endl; cin.getline(wolds,256,','); cout<<wolds<<endl; return 0; }
輸入
Kevin
Hi,Kevin,morning
輸出
Kevin
Hi
Kevin
第二種: 在<string>中的getline函數(shù)有四種重載形式:
istream& getline (istream& is, string& str, char delim); istream& getline (istream&& is, string& str, char delim); istream& getline (istream& is, string& str); istream& getline (istream&& is, string& str);
用法和上第一種類似,但是讀取的istream是作為參數(shù)is傳進(jìn)函數(shù)的。讀取的字符串保存在string類型的str中。
is:表示一個(gè)輸入流,例如cin。
str:string類型的引用,用來存儲(chǔ)輸入流中的流信息。
delim:char類型的變量,所設(shè)置的截?cái)嘧址?;在不自定義設(shè)置的情況下,遇到'\n',則終止輸入。
#include<iostream> #include<string> using namespace std; int main(){ string str; getline(cin, str, 'A'); cout<<"The string we have gotten is :"<<str<<'.'<<endl; getline(cin, str, 'B'); cout<<"The string we have gotten is :"<<str<<'.'<<endl; return 0;}
輸入
i_am_A_student_from_Beijing
輸出
The string we have gotten is :i_am_.
The string we have gotten is :_student_from_.
總結(jié)
以上所述是小編給大家介紹的C++ cin.getline及getline()用法詳解,希望對(duì)大家有所幫助,也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- C++中g(shù)etline()、gets()等函數(shù)的用法詳解
- C++中g(shù)etline()的用法詳解
- C++中g(shù)etline()和get()的方法淺析
- C++的get()函數(shù)與getline()函數(shù)使用詳解
- 基于C++ cin、cin.get()、cin.getline()、getline()、gets()函數(shù)的使用詳解
- c++中string類型和int類型相互轉(zhuǎn)換的幾種常用方法
- 詳解C++中實(shí)現(xiàn)繼承string類的MyString類的步驟
- 探究C++中string類的實(shí)現(xiàn)原理以及擴(kuò)展使用
- C++ string類getline()用法實(shí)例詳解
相關(guān)文章
C語言深入探究sizeof與整型數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)類型取值范圍
在main函數(shù)中,sizeof是可以正常工作的,但是在自定義函數(shù)中就不可以了。所以本文將為大家詳細(xì)講解一下關(guān)鍵字sizeof、整型數(shù)據(jù)存儲(chǔ)深入、數(shù)據(jù)類型取值范圍深入2022-07-07C++ LibCurl實(shí)現(xiàn)Web指紋識(shí)別功能
Web指紋識(shí)別是一種通過分析Web應(yīng)用程序的特征和元數(shù)據(jù),以確定應(yīng)用程序所使用的技術(shù)棧和配置的技術(shù),本文將通過C++中LibCurl庫實(shí)現(xiàn)簡單是指紋識(shí)別功能,感興趣的可以了解下2023-11-11C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法
這篇文章主要為大家詳細(xì)介紹了C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09c語言函數(shù)棧幀的創(chuàng)建和銷毀過程詳解
我們知道c語言中函數(shù)都是被調(diào)用的,main函數(shù)里面能調(diào)用其他函數(shù),其實(shí)main函數(shù)也是被別的函數(shù)調(diào)用的,下面通過本文給大家分享c語言函數(shù)棧幀的創(chuàng)建和銷毀過程,一起看看吧2021-08-08通過C語言判斷字符串是否為點(diǎn)分十進(jìn)制的IP地址
這篇文章主要為大家詳細(xì)介紹了如何通過C語言判斷字符串是否為點(diǎn)分十進(jìn)制的IP地址,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03淺談c++如何實(shí)現(xiàn)并發(fā)中的Barrier
這篇文章主要介紹了淺談c++如何實(shí)現(xiàn)并發(fā)中的Barrier,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07matlab鳥群算法求解車間調(diào)度問題詳解及實(shí)現(xiàn)源碼
這篇文章主要為大家介紹了matlab鳥群算法求解車間調(diào)度的問題分析及實(shí)現(xiàn)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02