c 中的兩種getline用法詳解

2022-09-29 16:09:18 字數 2516 閱讀 9815

getline是c++標準庫函式;但不是c標準庫函式,而是posix(ieee std 1003.1-2008版本及以上)所定義的標準庫函式(在posix ieee std 1003.1-2008標準出來之前,則只是gnu擴充套件庫里的函式)。getline會生成乙個包含一串從輸入流讀入的字元的字串,直到以下情況發生會導致生成的此字串結束:1)到檔案結束,2)遇到函式程式設計客棧的定界符,3)輸入達到最大限度。

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

下面就對c++ -- getline()函式的用法說明,以及getline()函式作為while條件的問題,總結一下:

在c++中本質上有兩種getline函式,(稱為第一種)一種在標頭檔案中,是istream類的成員函式。

好了,看正文,給大家詳細介紹。

功能:讀入一行資料

c++中有2種getline函式,一種在標頭檔案 中,是istream類的成員函式;另一種是在標頭檔案 中,是普通函式。

1.在標頭檔案 的getline函式兩種過載形式:

istream& getline (char* s, streamsize n );//讀取最多n個字元儲存在s對應的陣列中,即使大小不夠n,

istream& getline (char* s, streamsize n, char delim ); //讀取最多n個字元儲存在s對應的陣列中,遇到delim,或者讀完一行,或字數達到限制則終止

特別說明: 最多讀取n個字元中結束字元算一位。

例子**:

// istream::getline example

#include // std::cin, std::cout

int main ()

通過字數限制修改的**:

通過設定終止字元使用getline函式的**:

關於這個函式的2點疑問:

第一點,當定義乙個小的陣列,輸入的時候要求輸入的長度超出陣列長度,輸出的時候會輸出全部的值。

#include

int main()

{ char name[5];

std::cin.getline(name,25);

std::cout<

結果:第二點,**如下

// istream::getline example

#include // std::cin, std::cout

int main () {

char name[6], title[256];

std::cout << "please, enter your name: ";

std::cin.getline (name,4);

//**通過字數限制存入陣列後就不再執行11-12行**,而是直接16行

std::cout << "please, enter your f**ourite movie: ";

std::cin.getline (title,256,'#');

std::cout<<:endl std::cout name title return>

2.在標頭檔案中的getline函式

(1)

istream& getline (istream& is, string& str, char delim);

istream& getline (istream&& is, string& str, char delim);

(2)

istream& getline (istream& is, string& str);

istream& getline (istream&& is, string& str);

說明:

例子**:

#include

#include

int main()

{ std::string name; //這裡定義的是string型別,而不是char

std::getline(std::cin,name);

std::cout<

getline在while語句中作為判定條件:

不設定終止符

#includewww.cppcns.comt;

#include

using namespace std;

int main()

{ string name;

while(getline(cin,name))

{ cout<

使用終止符的while語句(當輸入 ' \n ' 也不受影響)

#include

#include

using namespace std;

int main()

{ string name;

while(getline(cin,name,'#'))

{ cout<

結果:參考鏈結:

1.istream中的getline

2.string標頭檔案中的getline

本文標題: c++中的兩種getline用法詳解

本文位址:

C 中getline 的用法

getline是c 標準庫函式 它有兩種形式,一種是標頭檔案 istream 中輸入流成員函式 一種在標頭檔案 string 中普通函式 它遇到以下情況發生會導致生成的本字串結束 1 到檔案結束,2 遇到函式的定界符,3 輸入達到最大限度。函式語法結構 在 istream 中的getline 函式有...

C 模板中的typename的兩種用法

在模板引數中,typename與class的使用是一樣,如 template class a templatet class a 上面兩段 含義是一樣的。typename的第二個作用是用來指定相應名稱為型別。當模板中出現typedef,而typedef的內容還依賴於模板引數時,必須要指定 t bs是...

c 的operator的兩種用法

operator,它有兩種用法,一種是operator overloading 操作符過載 一種是operator casting 操作隱式轉換 1.operator overloading c 可通過operator 過載操作符,格式如下 型別t operator 操作符 如比重載 如下所示 te...