大家在學習c++程式設計時,一般在輸入方面都是使用的cin.
而cin是使用空白(空格,製表符和換行符)來定字串的界的。
這就導致了對於帶有空格的字串,比如」i love c++奮鬥樂園論壇」
只能讀入」i」,後面的都無法讀入。
這時怎麼辦?
一.對於字元陣列:
方法一:getline()
讀入整行資料,它使用回車鍵輸入的換行符來確定輸入結尾。
呼叫方法: cin.getline(str, len);
第乙個引數str是用來儲存輸入行的陣列名稱,第二個引數len是要讀取的字元數。
#include
<
iostream
>
2using
namespace
std;34
intmain()5
方法二:get()
呼叫方法:cin.get(str, len);
#include
<
iostream
>
2using
namespace
std;34
intmain()5
那麼兩者有何區別?
兩者都讀取一行輸入,直至換行符。
然後,getline將丟棄換行符,而get()將換行符保留在輸入序列裡。
所以,再使用cin.get()輸入多行資料時,中間可以使用get()消除換行符。
#include
<
iostream
>
2using
namespace
std;34
intmain()5
因為get(str, len)和get()都是cin的類成員,所以可以合併起來寫:
#include
<
iostream
>
2using
namespace
std;34
intmain()5
二.對於string類
方法一:getline(cin, str)
這說明這裡的getline不是類方法。
#include
<
iostream
>
2#include
<
string
>
3using
namespace
std;45
intmain()6
C 每次讀取一行字串輸入
c 的istream中的類 如cin 提供了一些面向行的類成員函式 getlinr 和get 這兩個函式都讀取一行輸入,直到到達換行符。然而,隨後getline 將丟棄換行符,而get 將換行符保留在輸入佇列中。1.getline getline 函式讀取整行,它使用通過回車鍵輸入的換行符來確定輸入...
fscanf 跳過空格,讀取一行
fscanf fp,s slineword 以上語句,在讀取一行資料時,如何遇到該行資料有空格,那麼讀到空格處就停止,不再繼續向下讀。若想遇到空格繼續讀取,讀取完整的一行資料,則用如下語句 fscanf fp,n c slineword fscanf用於讀取字串資料流,遇到空白字元 空格 製表符 t...
C語言一行一行讀取檔案
c語言中,使用fgets函式可以一行行讀du取檔案。1 fgets函式 原型 char fgets char buf,int bufsize,file stream 功能 從檔案結構體指標stream中讀取資料,每次讀取一行。說明 讀取的資料儲存在buf指向的字元陣列中,每次最多讀取bufsize ...