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

2022-12-21 02:16:05 字數 4745 閱讀 5180

1樓:

這是vc6.0的bug,需要service pack 5以上才會修復

vc6.0裡getline和cin.getline都有這樣的問題,本來getline以後它還會讀取並拋棄快取中的換行符\n,但vc6的stl庫太老了所以行為也不太標準

2樓:仙戈雅

#include

#include

using namespace std;

int main(void)

{char first_name[10],last_name[10];

cout<<"what is your first name?";

cin.getline(first_name,10);

cout<<"what is your last name?";

cin.getline(last_name,10);

cout<<"--------the output result ---------"<

3樓:匿名使用者

什麼是te u沒有儲存到last裡面去?你要表達什麼

c++中,getline函式的詳解

4樓:匿名使用者

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中。

5樓:蘿蔔肥

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

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

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

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

6樓:

getline

語法

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

num - 1個字元已經讀入,

碰到乙個換行標誌,

碰到乙個eof,

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

7樓:匿名使用者

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()函式的用法

8樓:果映房驪

getline()是屬於string流.

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

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

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

兩個函式雖然類似.

但是卻是不一樣的.

9樓:閒來無事

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

char* s = new char[1001];

memset(s, 0, 1001);

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

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

10樓:海闊天空

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函式讀取的內容。

c++ getline函式用法

11樓:通若珍

額。。。這個是getline函式的原型及解釋 怎麼看著和你程式用法不太一樣,特別是第二個引數的用法。。。尷尬。。。

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

num - 1個字元已經讀入,

碰到乙個換行標誌,

碰到乙個eof,

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

這個是eof的原型和解釋 還有乙個小例子

語法:bool eof();

如果到達相關聯的輸入檔案的末尾,eof()函式返回true,否則返回false。

例如:char ch;

ifstream fin( "temp.txt" );

while( !fin.eof() )

fin.close();

c++ 怎麼用getline函式讀取檔案資料?

12樓:匿名使用者

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;}

13樓:匿名使用者

#include

using std::fstream;

char buffer[1024] = ;

fstream kkk;

kkk.open("e:\\softworkspace\\123.txt");

kkk.getline(buffer, 1024);

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

getline 語法 用getline 讀取字元到buffer中,buffer在 中通常體現為乙個字元陣列,streamsize num是一次讀入多少個字元,num 1個字元已經讀入,當碰到乙個換行標誌,碰到乙個eof,或者任意地讀入,直到讀到字元delim。delim字元不會被放入buffer中。...

c中建構函式的作用,C 中建構函式的作用

共同點 都是例項化物件,初始化資料的 預設構造是說所有的類都從祖先object那繼承了空參的構造方法,你不寫與寫空參構造都存在,而有引數的構造一般是自己寫的,寫就有不寫就沒有,它的作用和空參的一樣,只是它裡面可以有引數,給你個例子來說明吧 有乙個類monitor它有屬性string height s...

關於C類中帶函式的問題,關於C類中帶函式模板的問題。。

include using namespace std class student class manage int main 大概按照上面的來寫就可以了 大致明白你的意思了。你是想用c 的stl標準的algorithm演算法來排序對吧?如果是這樣,你得自己寫乙個iterator類的東西來處理你的資...