因為從流中讀入資料儲存到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 編譯結果 再說說拼接字串,一般情況我們是如何拼接字串的呢?看下面 正常拼接字...