C 連續輸入帶空格的字串

2021-07-16 04:33:11 字數 1777 閱讀 1478

測試檔案

測試1

#include 

#include

#include

using

namespace

std;

int main()

測試結果

顯然cin>>s不能夠接受空格的輸入

測試2

#include 

#include

#include

using

namespace

std;

int main()

測試結果

顯然getline函式的使用比只用cin要好多了,至少能讀入帶有空格的字串,但是少了最後一行,第一行成了空行。

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

在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對應的陣列中。並且讀到『\n』的時候會自動替換成『\0』。所以在讀取輸入流的時候第乙個「3」讀取之後緊接著讀取了『\n』這時第一行就為空行了,這樣又會造成少讀最後一行,所以需要在之前忽略第一次讀入,改為以下**。

測試3

#include 

#include

#include

using

namespace

std;

int main()

測試結果

現在已經完全讀入了

而且換成gets也可以,如下

#include 

#include

#include

using

namespace

std;

int main()

補充說明,在c語言中直接使用scanf(「%s」)輸入字串是不行的,因為它碰到空格或者tab就會停下來。

C C 輸入帶空格的字串

機試的時候碰到的問題,當時腦子卡克到想不出來怎麼處理,用了一種賊複雜的方法,現在整理下!include include int main 一句gets解決的事情,我居然tm沒想起來。太羞恥了 include include int main include include int main incl...

C語言帶空格的字串輸入(記)

參考 新增鏈結描述 一般輸入 scanf s str 遇到空格就停止接受後面的字元 scanf s str,10 不接受帶空格的字串輸入,長度指定為10,遇到空格就停了。所以 char gets char buffer char str 30 gets str 可以讀取空格,回車結束 問題來了,如果...

C C 中帶空格的字串的輸入

對於字元陣列 方法一 getline 讀入整行資料,使用回車鍵輸入的換行符來確定輸入結尾。呼叫方法 cin.getline str,len 第乙個引數str用來儲存輸入行的陣列名稱,第二個引數是要讀取的字元數。方法二 cin.get str,len 兩者都是讀取一行輸入,直至換行符。然後,getli...