C/C++編程筆記:getline()函數和字符數組

2021-02-19 C語言編程學習基地

C ++ getline()是一個標準庫函數,用於從輸入流中讀取字符串或行。它是<string>標頭的一部分。getline()函數從輸入流中提取字符,並將其附加到字符串對象,直到遇到定界字符。這樣做時,先前在字符串對象str中存儲的值將被輸入字符串替換(如果有)。


getline()函數可以兩種方式表示:

句法:

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

參數:

is:它是istream類的對象,並告訴函數有關從何處讀取輸入流的流。

str:這是一個字符串對象,從流中讀取輸入後,將輸入存儲在此對象中。

delim:是分隔字符,它告訴函數在達到該字符後停止讀取進一步的輸入。

返回值:該函數返回相同的輸入流作為IS被接受為參數。

句法:

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

第二個聲明與第一個聲明幾乎相同。唯一的區別是,後者具有分隔符,默認情況下為新行(\ n)字符。

參數:

是:它是istream類的對象,並告訴函數有關從何處讀取輸入流的流。

str:這是一個字符串對象,從流中讀取輸入後,將輸入存儲在此對象中。

返回值:該函數返回相同的輸入流作為IS被接受為參數。

下面的程序演示了getline()函數的工作:


示例2:我們可以使用getline()函數根據字符分割句子。


警告:此函數將換行符或('\ n')字符視為分隔符,並且換行符是該函數的有效輸入。

在C ++中,流類支持面向行的函數getline()和write()分別執行輸入和輸出函數。getline()函數讀取以新行結尾或直到達到最大限制的整行文本。getline()是istream類的成員函數,語法如下:

//(緩衝區,stream_size,定界符)istream&getline(char *,int size,char ='\ n')//分隔符被視為'\ n'istream&getline(char *,int size)

該功能執行以下操作:

1.提取字符直至分隔符。

2.將字符存儲在緩衝區中。

3.提取的最大字符數為大小–1。

請注意,終止符(或定界符)可以是任何字符(例如'',','或任何特殊字符等)。讀取終止符,但不將其保存到緩衝區中,而是將其替換為空字符。


在上面的程序中,語句cin.getline(str,20)讀取一個字符串,直到遇到換行符或最大字符數(此處為20)。嘗試使用具有不同限制的功能,然後查看輸出。

本期的知識分享就到這裡了,希望對大家有幫助~

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裡或許可以幫到你~

C語言C++編程學習交流圈子,QQ群【464501141

分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

編程學習書籍分享:

編程學習視頻分享:

相關焦點

  • c語言指針與字符數組
    這裡我們要注意的是我們不能寫成c = pc,這種是會編譯報錯的,我們同樣不能對數組進行和指針類似的操作如c = c+1;但是可以對指針進行這種操作,比如pc++,這樣就可以指向數組的下一個元素。對應地址變為101
  • C語言字符數組和字符串
    字符數組的各個元素依次存放字符串的各字符,字符數組的數組 名代表該數組的首地址,這為處理字符串中個別字符和引用整個字符串提供了極大的方便。一、字符數組字符數組的定義形式與前面介紹的數值數組相同。例如: 字符數組也允許在定義時進行初始化賦值。
  • 一文帶你了解c++和c中字符串的使用
    說完了c,那麼對於我們的c++來說,它定義字符串就簡單多了,因為有關鍵字來定義,你一看就知道。那麼下面大家就隨著我的筆步一起來看看究竟吧!有可能有些網友還沒怎麼接觸到c++(c++它是一門面向對象的語言,而c是一門面向過程的語言,所以這裡可能沒接觸過那個面向對象的網友不習慣這個用法,不過還是建議至少要掌握一門面向對象的語言,在這個發展快速的時代,不能太固步自封了(我這裡也是簡單的介紹一下c++中的字符串,不會設計到類和對象什麼的,只是和c語言做個對比)。)1、什麼是字符串?
  • C/C++編程筆記:C/C++中的strrchr()函數,到底該怎麼用?
    此函數返回一個指針,該指針指向字符串中最後一次出現的字符。 我們想要找到的最後一個出現的字符作為函數的第二個參數傳遞,而我們必須在其中找到該字符的字符串作為函數的第一個參數傳遞。 句法char * strrchr(const char * str,int c)在這裡,str是字符串,c是要定位的字符。它作為int促銷傳遞,但在內部轉換回char。 運用給定C ++中的字符串,我們需要查找字符的最後一次出現,假設為「 a」。
  • python+C、C++混合編程的應用
    有的語言專注於簡單高效,比如python,內建的list,dict結構比c/c++易用太多,但同樣為了安全、易用,語言也犧牲了部分性能。在有些領域,比如通信,性能很關鍵,但並不意味這個領域的coder只能苦苦掙扎於c/c++的陷阱中,比如可以使用多種語言混合編程。
  • C/C++編程筆記:數組和字符串丨多維數組詳解
    我們可以將尺寸為10,20的二維整數數組'x'聲明為:int x [10] [20];二維數組中的元素通常用x [i] [j]表示,其中i是行號,'j'是列號。二維數組可以看作是具有「 x」行和「 y」列的表,其中行號的範圍是0到(x-1),列號的範圍是0到(y-1)。具有3行3列的二維數組'x'如下所示:
  • c++ fstream + string處理大數據
    (4)上面兩點算是自己的誤解吧,因為c++裡面也有也有與之對應的fstream類,c++map容器類,詳見c++map簡介(5)c++裡面也有相對比較成熟的string類,裡面的函數也大部分很靈活,沒有的也可以很容易的實現split,strim等,詳見c++string實現(6)最近從網上,看到了一句很經典的話,c++的風fstream類+string
  • C/C++編程筆記:C++中的isspace()及其在計算空格字符中的應用
    在C ++中,isspace是用於字符串和字符處理的預定義函數。
  • C/C++編程筆記:如何理解C語言中的回調函數,零基礎也看得懂
    在c語言中,回調是使用函數指針來實現的。函數指針——顧名思義,是指向一個函數的指針。後者把g聲明為一個數組,數組的元素類型是一個函數指針,它所指向的函數接受兩個參數,分別是一個整型值和浮點型值,並返回一個整型指針。
  • 在C++中將string轉換為char數組
    這可以在c_str()和strcpy()函數的幫助下實現。c_str()函數用於返回一個指向數組的指針,該數組包含一個以空結尾的字符序列,該序列表示字符串的當前值。const char* c_str() const ;如果拋出異常,則字符串中沒有任何更改。但是,當需要查找或訪問單個元素時,我們可以使用strcpy()函數將其複製到char數組中。
  • C/C++編程筆記: C語言編程面試常見問題,全是經典題!
    如果有剛剛學習編程的小夥伴也可以看一下,都是當時大學應該學懂的,但是因為我以前沒有好好聽課,有些也沒有注意到,現在也是提醒大家吧~C語言的主要特徵是什麼?C是一種過程語言。C語言的主要功能包括對內存的低級訪問,簡單的關鍵字集和簡潔的樣式。這些功能使其適用於諸如作業系統或編譯器開發之類的系統編程。 i ++和++ i有什麼區別?
  • c++中的string常用函數用法總結
    o) [ ], at() //存取單一字符p) >>,getline() //從stream讀取某值q) <<    //將謀值寫入streamr) copy() //將某值賦值為一個C_strings) c_str() //將內容以C_string返回t) data() //將內容以字符數組形式返回u) substr(
  • 在數據科學中使用 C 和 C++ | Linux 中國
    C 語言的方式C 語言是通用程式語言,是當今使用最廣泛的語言之一(依據 TIOBE 指數、RedMonk 程式語言排名、程式語言流行度指數和 GitHub Octoverse 狀態 得來)。這是一種相當古老的語言(大約誕生在 1973 年),並且用它編寫了許多成功的程序(例如 Linux 內核和 Git 僅是其中的兩個例子)。
  • C++、java 和 C 的區別
    的區分 ,這個跟java和c# 的區別比較大,但c#裡面有unit ulong ushort 這三種就相當於c++的修飾詞unsigned,當c++李明的變量類型定義unsigned,就默認是整數。2.java和c#裡面都有字符串型 和byte型, 但c++裡面沒有,但它是以另外的形式存儲這類型的數據的,比如 java和c#裡面的 byte其實就是unsigned char類型;c++中字符數組就能存儲字符串 (char a[]={"hello"}; ps:注意c++裡面定義數組 變量必須在中括號前面)。
  • C/C++中字符串常量的不相等性及字符串的Copy
    {          cout<<"相等";      }      else      {          cout<<"不相等";      }  }  上面的代碼我們測試兩個內容為test的字符串常量是否相等,按照常理,應該是相等的,這些在一些過程式語言中會得到相等的結論,但在c/
  • C/C++可變參數函數
    c/c++支持可變參數的函數,即函數的參數是不確定的。一、為什麼要使用可變參數的函數?一般我們編程的時候,函數中形式參數的數目通常是確定的,在調用時要依次給出與形式參數對應的所有實際參數。但在某些情況下希望函數的參數個數可以根據需要確定,因此c語言引入可變參數函數。這也是c功能強大的一個方面,其它某些語言,比如fortran就沒有這個功能。典型的可變參數函數的例子有大家熟悉的printf()、scanf()等。二、c/c++如何實現可變參數的函數?
  • C/C++編程筆記:運算符重載丨重載C++中的New和Delete運算符
    (1)如果使用某個類的成員函數來重載這些運算符,則意味著這些運算符僅針對該特定類才被重載。(2)如果重載是在類外部完成的(即它不是類的成員函數),則只要您使用這些運算符(在類內或類外),都將調用重載的「 new」和「 delete」。這是全局超載。
  • C/C++中字符串與數字轉換
    ,方法一和方法二是c++中的方法,方法三和方法四是C語言庫函數的方法。方法一:c++11中string中添加了下面這些方法幫助完成字符串和數字的相互轉換stod stof stoi stol stold stoll stoul stoull函數原型:float stof (const string& str, size_t* idx = 0);to_string to_wstring
  • C/C++編程筆記:如何在C++中標記字符串?四種方法告訴你
    標記字符串表示相對於某些定界符分割字符串。有很多標記字符串的方法。在本文中,將對其中的四個進行說明。
  • C++之字符串類學習總結
    一、回顧c語言對字符串的實現:一般我們在c語言要實現對字符串操作的話,一般是採用字符數組或者一組函數來實現的,為啥這樣做呢,那是因為c語言裡面根本就沒有字符串類型的關鍵字;而且c語言也支持自定義類型,所以更加無法獲得字符串類型為了解決這個問題,在c++中,引入了自定義類型,而且可以通過類來完成對字符串類型的定義。