1樓:寒寒家
第乙個問題:getline這個函式的第二個引數n,是取的字串的最大長度,當給出的字串長度大於n的時候,就去前n個字元,這個是正常的情況。我覺得你把這個當成是一種異常了,認為會返回0.
但實際上這個正確的情況。(哦,剛查到這個函式的返回值是乙個流物件。這是個正常的函式呼叫,那麼這個流物件的狀態識別符號應該還是goodbit吧。
)第二個問題:
我用下下面的程式,沒有遇到你說的那種問題。我輸入的也是多個字元。
???是不是我沒明白你的意思???
#include
using namespace std;
int main()
return 0;
2樓:網友
單是這個**段的話,執行沒問題。
while迴圈之前是否有輸入語句?可能之前輸入緩衝區還有'',所以這讀到空字串,while直接跳過。
第二問的話,不清楚你具體怎麼實現,下面的**沒問題。
char choice;
while(1)
3樓:
輸入的長度超過了13, 它存放13個字元。所以getline執行成功。
會直接讀取回車符 --加乙個判斷,如果讀到回車符,再乙個新符號。
getline函式
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個字元,如果遇到換行符''(第一種形式)或delim(第二種形式),則讀取終止,''或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,或者,任意地讀入,直到讀到字元字元不會被放入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樓:匿名使用者
istream& getline ( istream& ,string& )
都是將輸入流的字元讀入到字串中,上面那個以你設定的終結符為結束標誌,下面那個以換行符''作為結束。如果讀到eof或者遇到錯誤也會結束。
9樓:風若遠去何人留
getline是c++中的乙個輸入函式,作用為從標準輸入讀入整行資料,並存為字元陣列(char*或cha)。
getline有兩種過載:
1、 istream& getline(char* s, int n);
該操作為,從輸入中讀取整行資料,當遇到換行符時結束輸入。如果在輸入過程中,輸入實際字元數量超過引數n的值,同樣會結束輸入。輸入結果存在字元指標s指向的空間中。
2、istream& getline(char* s, int n, char delim);
這一過載較1中多了乙個字元型的delim,其功能為設定結束字元。
當讀入時,遇到字元與delim值相等時,結束輸入。除此外,其他與1中相同。
即,getline(s,n);
等同於getline(s,n,''
10樓:匿名使用者
取得開啟檔案中 一行的資料。
c++中使用getline怎麼讀檔案?
11樓:風若遠去何人留
在c++中,getline函式是用來從標準輸入流cin中讀取整行資料的。即預設情況下,getline讀的不是哪個檔案,而是命令列中鍵盤的輸入。
要使用getline讀檔案,首先要做的就是將cin重定向到要讀的檔案中。可以採用以下**實現。
streambuf *backup;
ifstream fin;
"")開啟要讀的檔案。
backup = 備份cin本身的緩衝區。
將cin的緩衝區重定向到檔案。
// 執行需要的讀操作,包括getline。
; 恢復原始的cin緩衝區。
在執行。後就可以使用getline從檔案中讀取整行資料了。
getline的呼叫方式為。
getline(char * buf, int size);
即讀取一行資料,存到buf中,如果資料長度超過size指定的長度,那麼唯讀size位元組資料。
12樓:匿名使用者
因為getline有三個引數,第三個引數是字串的結束符,也就是當getline遇到這個結束符時,就不在接受輸入了,比如寫成 getline(cin,st,'s');即使輸入的是abcsabc 那麼也只會顯示 abc ,因此對於上面出現的情況,getline預設情況下以回車(''作為結束符,第一次按回車表示字串結束,第二次按回車才開始輸出。
你可以通過多讀一次char的方法放掉這個回車符。這個在c++程式設計思想裡有很詳細的解釋,你可以找來看看的。
getline函式用法
13樓:blackpink_羅捷
#if defined(_gnu_source) |posix_c_source >=200809l
#include
函式宣告:ssize_t getline(char **lineptr, size_t *n, file *stream);
返回值:成功:返回讀取的位元組數。
失敗:返回-1。
引數:lineptr:指向存放該行字元的指標,如果是null,則有系統幫助malloc,請在使用完成後free釋放。
n:如果是由系統malloc的指標,請填0
stream:檔案描述符。
c++中使用getline怎麼讀檔案?
c++中使用getline讀檔案的問題
關於C 的getline疑問,C 中getline 是什麼意思?
試試cin.getline s1,5,n c 中getline 是什麼意思?istream getline istream string 都是將輸入流的字元讀入到字串中,上面那個以你設定的終結符為結束標誌,下面那個以換行符 n 作為結束。如果讀到eof或者遇到錯誤也會結束。getline是c 中的乙...
問關於c語言指標的問題,問一個關於C語言指標的問題
常玉標 cannot convert from const int to double 編譯器 會出現這樣的錯誤.應為不能把const int 賦值給 double 型別的變數.希望你能懂 首先我鄙視下樓上的回答,答非所問。你這肯定錯誤的啊,首先 double p 是定義了一個指標變數p,p只能存放...
c菜鳥問很弱的問題關於,c 菜鳥,問乙個很弱的問題,關於string size type
當乙個人安靜的呆在中國,知道隨口罵人是個人的自由當他了解國外了以後,才知道原來在白宮破口大罵 也是一種自由string size type這種表示出現的情況不止是他是類的靜態資料成員這麼一種,比如class string 那麼當想要在外界引用類a的時候可以string a這樣子寫來建立物件,類似的,...