C C 讀入多行字串string

2021-07-23 08:16:14 字數 1393 閱讀 5292

因為從流中讀入資料儲存到string中,string會遇到空格就停止錄入。這樣當我們輸入一行帶空格的字串,就要考慮getline函式,從流中讀入一行字串。

首先我要介紹一下標準c++字串類string,它包含在」string」標頭檔案中,記住不是string.h或者cstring標頭檔案。兩者標頭檔案中都是包含對字串陣列處理的函式宣告,前者標準c語言標頭檔案,而後者是標準c++標頭檔案,功能一樣。

因為標準c++類string的定義和處理在標準命名空間,所以還要指明限定,例如:

using namespace std;

std 代表標準命名空間。 :: 則是作用域運算子,在這裡用於定位到std命名空間。當然也可以using std::string。

#include

using

namespace

std;

string str;

cin>>str;

為了簡略,下面標頭檔案和命名空間宣告不再新增到程式例子中。

getline(istream &in,string,s)從流中讀入一行字串,直到遇到換行符。

string str;

getline(cin,str);

例如讀入三行字串:

string str[3];

for(int i=0;i<3;i++)

getline(cin,str[i]);

例如一些程式設計題要求先輸入字串行數,然後再一行一行讀入字串。如果正常順寫程式設計的話,會發現第一行字串讀入的是空,後續才能正常錄入每行字串。

這是因為第一行輸入乙個int資料後,換行符並沒有被忽略,直接被準備讀入第一行字串的getline俘獲。

所以需要在第一行輸入乙個int資料後,呼叫cin.ignore()忽略下面的乙個流錄入,將其拋棄。

int n;

cin>>n;

cin.ignore(); //取消換行鍵的讀入

string strcinline[100];

for(int i =0;icin,strcinline[i]);

或者給strcinline動態申請空間,節省空間開銷。

int n;

cin>>n;

cin.ignore(); //取消換行鍵的讀入

string* strcinline = new

string[n];

for(int i =0;icin,strcinline[i]);

delete strcinline; //記得釋放動態空間

strcinline = null;

個人學習記錄,由於能力和時間有限,如果有錯誤望讀者糾正,謝謝!

c c 字串讀入含有空格

字串帶空格讀入在某些場合用的很多,題主總結了三中比較好用的方法 sring型別不能讀取空格,但是getline cin,string 可以,字串以回車 n 結束讀取。c語言中,常使用gets str 同樣以回車 n 結束。使用scanf c str 這個是以字元c為結束符,那麼修改下scanf n ...

C C 字串string操作(全)

include int i 123 string a to string i atoi使用 string a 123 a.c str 把 a 轉化為const char 型別 int b atoi a.c str b 123 stoi使用 string a 123 int b stoi a b 12...

多行字串 模板字串

多行字串 下面是普通字串的寫法 普通字串 var l abcd console.log l 編譯結果 如何讓讓乙個字串獨佔多行呢?就需要用到es6 裡的多行字串 多行字串 var i ab cd console.log i 編譯結果 再說說拼接字串,一般情況我們是如何拼接字串的呢?看下面 正常拼接字...