C 中getline的用法,C 中,getline函式的詳解

2022-03-18 13:52:03 字數 3921 閱讀 7227

1樓:許詩文

getline() 語法:

用getline()讀取字元到buffer中,buffer在**中通常體現為乙個字元陣列,streamsize num是一次讀入多少個字元, num - 1個字元已經讀入, 當碰到乙個換行標誌, 碰到乙個eof, 或者任意地讀入,直到讀到字元delim。delim字元不會被放入buffer中。delim字元可以自已設定,預設為回車符'/n'

#include

#include

#include

#include

const int n=10;

int main()

while(fin.getline(str,sizeof(str)))

cout<

fin.clear();

cin.get();

return 0;}

2樓:匿名使用者

getline()是從檔案讀,寫的話用fstream

3樓:匿名使用者

該法不唯一哦,參考:

#include

#include

#include

using namespace std;

int main()

cout<

buf2[n++]=ch;//?

}buf2[n] = '\0';

fstream out("a2.txt",ios::out|ios::trunc);

if(!out)

out<

out.close();

infile.close();

return 0;}

4樓:匿名使用者

string str;

getline(cin,str);

寫入我還不會,呵呵

c++中,getline函式的詳解

5樓:匿名使用者

c++中本質上有兩種getline函式,一種在標頭檔案中,是istream類的成員函式。一種在標頭檔案中,是普通函式。

一、在中的getline函式有兩種過載形式:

istream& getline (char* s, streamsize n );

istream& getline (char* s, streamsize n, char delim );

作用是從istream中讀取至多n個字元儲存在s對應的陣列中。即使還沒讀夠n個字元,如果遇到換行符'\n'(第一種形式)或delim(第二種形式),則讀取終止,'\n'或delim都不會被儲存進s對應的陣列中。

二、在中的getline函式有四種過載形式:

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是作為引數is傳進函式的。讀取的字串儲存在string型別的str中。

6樓:蘿蔔肥

char s[1000]; (中括號裡的數字小於1000可能會出錯,但不一定出錯,原因上面已講)

或者char* s=new char[1000];

或者char a[1000];char * s=a;

或者char a[1000];char *s=&a[0];

7樓:

getline

語法:

getline()函式用於輸入流,讀取字元到buffer中,直到下列情況發生:

num - 1個字元已經讀入,

碰到乙個換行標誌,

碰到乙個eof,

或者,任意地讀入,直到讀到字元delim。delim字元不會被放入buffer中。

8樓:匿名使用者

getline功能getline是string類物件的成員函式,屬於string io 操作。用於讀取整行文字

getline引數getline(cin,str);cin:輸入流str:string物件

getline說明getline函式從輸入流的下一行讀取,並儲存讀取的內容到str中,但不包括換行符。getline 函式將 istream 引數作為返回值,和輸入操作符一樣也把它用作判斷條件。   範例:

  #include #include using namespace std;  int main()    結果:  輸入 line1 ----回車換行  顯示為空  輸入 line2 ----回車換行  顯示 line1  輸入 line3 ----回車換行  顯示 line2  ----(以此類推

c++讀入檔案時getline函式怎麼使用? 5

c++中getline()函式的用法

9樓:果映房驪

getline()是屬於string流.

讀取從鍵盤輸入的字串.直到遇到結束符.

而cin.getline()是屬於istream流.

一樣讀取從鍵盤輸入字元,但是可以限定讀取多少個字元或者將哪個字元當作結束符.

兩個函式雖然類似.

但是卻是不一樣的.

10樓:閒來無事

你沒給s分配空間也沒初始化,s就是個野指標。

char* s = new char[1001];

memset(s, 0, 1001);

cout<<"請輸入字串,以『\n『結束:\n";

cin.getline(s,1000,'\n');cin.getline(s,1000,'\n');

11樓:海闊天空

getline()函式有兩個版本,關於這個三個引數的版本,它的第乙個引數是指向字元陣列的指標,因為你定義的是:char *s(只說明s是指向字元型別的指標,但沒有說明它是指向字元陣列的),這樣能通過編譯,但會執行錯誤,因為編譯器在編譯時不知道s是指向字元陣列的,它以為是指向乙個字元的,就只為 s所指向的內容分配乙個位元組的記憶體,這樣當執行時,程式存那1000個字元是這樣做的:先找到s所指向的記憶體,也就是之前分配的乙個位元組,存入第乙個字元,然後按這個記憶體位址的順序繼續往下存餘下的字元(因為陣列是位址連續的),但這時就可能出現錯誤,因為除了第乙個記憶體是之前分配了的,其他的記憶體都是未分配的,但又可能是已經儲存了其他資料的,所以會出錯。

而且是可能出錯,因為是可能已經儲存了其他資料。

當你把程式改成這樣:

char s[1000]; (中括號裡的數字小於1000可能會出錯,但不一定出錯,原因上面已講)

或者char* s=new char[1000];

或者char a[1000];char * s=a;

或者char a[1000];char *s=&a[0];

cin.getline(s,1000,'\n');

至於連用兩個getline函式沒有問題,只是第二個會覆蓋第乙個所讀取的內容,最終陣列中儲存的是第二次呼叫getline函式讀取的內容。

getline()函式,C 中,getline函式的詳解

這是vc6.0的bug,需要service pack 5以上才會修復 vc6.0裡getline和cin.getline都有這樣的問題,本來getline以後它還會讀取並拋棄快取中的換行符 n,但vc6的stl庫太老了所以行為也不太標準 include include using namespace...

C中this指標的用法

this 關鍵字引用類的當前例項,還可用作擴充套件方法的第乙個引數的修飾符。以下是 this 的常用用途 限定被相似的名稱隱藏的成員,例如 public employee string name,string alias 將物件作為引數傳遞到其他方法,例如 calctax this 宣告索引器,例如...

c中while的用法,在c 語言中while(n 的意義是什麼?怎麼用?

先說while ch getchar n 可以把它分成 ch getchar while ch n 前者是呼叫getchar函式,即ch為從鍵盤鍵入的字元.後者括號裡指內 當鍵入的不是 n 即回車 容 所以迴圈結束的條件是輸入回車鍵.然後,這是乙個小寫字母轉化成大寫的程式,if ch a ch z ...