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...