c string類與字串綜合處理

2021-08-15 08:34:54 字數 3531 閱讀 8900

標頭檔案#include

1.string宣告以及初始化

string s;

cin>>s;//輸入,遇空格結束

string c1("wx love my!");//初始化可有空格

string c2=c1;

string c3(5,'c');//初始化為5個c即"ccccc"

string s1[10];//二維陣列10行n列

2.string支援+,+=連線字串,支援=賦值,支援》 >= == < <= !=的比較(按照字典序,即對應位置的ascii碼)

string s;

cin>>s;

string c1("wx love my!");//初始化可有空格

s+=c1;

coutend()得到指向字串結尾的iterator

size()得到字串的大小

length()和size函式功能相同

empty判斷是否為空

swap()交換兩字串

insert(n,s) //插入字元,在下標n之前(n從0開始)插入字串s,insert()函式不支援傳入單個字元,這時的單個字元必須寫成字串形式

erase() //刪除字元

s.erase(13);//從下標13開始往後全刪除(包括下標13)

s.erase(7,5);//從下標7開始往後刪5個

clear() //刪除全部字元 

find(str)查詢在當前字串裡查詢子串str,如果找到返回str在當前字串裡的首字母起始下標數字位置,沒有就返回npos(-1)

find_first_of(str)查詢子串str在字串裡第一次出現的首字母下標

find_last_of()查詢子串str在字串裡最後一次出現的首字母下標

substr() //返回某個子字串 substr(n1,n2)從當前字串n1下標開始取出n2個字元

substr(k)從當前位置k開始一直到結尾取出子串

4.string與字元陣列區別

string是複雜的模板容器,而字元陣列是char型指標,string可以使用下標運算子來讀取元素或者附給字元陣列或者改變已有元素,但是不能通過下標來給string賦值!

string c1;

char a[100]="i'm coming!";

c1=a;//字元陣列附給string

c1[0]='i';//通過下標改變string

cout<

char a[100]="my";

string c1("i'm coming!!");

cout《同時string支援迭代器遍歷

string c1("i'm coming!!");

string::iterator it=c1.begin();//定義迭代器

for(;it!=c1.end();it++)

cout<<*it<<1> cin:cin遇空格回車結束,但是cin的回車與空格會留在鍵盤緩衝區,不過cin讀取會跳過所有的空格回車(包括緩衝區裡的),讀取其後的東西,所以對於cin輸入無影響。但是對於getchar或者cin.get() cin.getline getline get都有影響,他們都會讀取cin的緩衝區遺留!

<2>cin.get()

cin.get(字元變數名char ch)可以用來接收字元,

cin.get(無引數)常用來掠去空格回車。其回車會留在緩衝區,多餘字元也會留下。

或者ch=cin.get()

<3>cin.getline()

接受乙個字串,可以接收空格並輸出,預設遇回車結束

cin.getline(字串名稱,接受字元個數n,結束標誌)//會讀取n-1個字元,自動在n的位置加上'\0',因此該輸入只能輸入字串陣列!而不能輸入string!

結束方法: 遇到結束符號或者讀夠n-1個字元,但是如果輸入字元多於n-1個,cin會自動設定輸入失效自動關閉輸入,後面的cin均不能輸入就結束!且其回車結束符不留在緩衝區!!

<4>getline()

getline接受乙個字串,可以接收空格並輸出,遇回車結束!cin.getline()類似,但是cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函式,getline可用來接受string!getline(cin,str);且getline的回車不留在緩衝區裡!

6.關於字串流stringstream

標頭檔案:#include

stringstream是字串流,經常被我用來作資料切分或者型別轉化。編譯器擁有足夠的資訊來判斷需要哪些轉換。庫中宣告的標準類就利用了這一點,自動選擇所必需的轉換。而且,轉換結果儲存在stringstream物件的內部緩衝中。你不必擔心緩衝區溢位,因為這些物件會根據需要自動分配儲存空間。stringstream可以方便的實現數字與字串之間的轉化

注意:stringstream流輸出時會按照輸出的型別自動賦值比如  ss<<"123456\\}"; int m; ss>>m; m=123456!!

例一:題目:輸入的第一行有乙個數字 n 代表接下來有 n 行資料,每一行資料裡有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫乙個程式將每行的總和印出來。

輸入:3

1 2 3

20 17 23 54 77 60

111 222 333 444 555 666 777 888 999

輸出:6

2514995

**:(字串轉化為數字)

#include #include#includeusing namespace std;

int main()

int main()

}while(cin>>s&&s!="*")//輸入郵件資訊

dest[name].push_back(t);存入對應map

}cin.get();//吃回車

string date;

while(getline(cin,t)&&t!="*")//輸入文字內容防止回車結束所以用while迴圈累加!!!

date=date+" "+t+"\n";//文字處理自帶五空格和換行!!!到時候直接輸出即可

for(int i=0;iuses=dest[mta[i]];

cout<<"connection between "<\n"<<" 250\n";

for(int j=0;j\n";//dest[mta[i]][j]

if(addr.count(dest[mta[i]][j]))//判斷使用者是否存在!

else

cout<<" 550\n";

}if(flag==true)//至少存在乙個才輸出文字date

;//儲存每一列的最大長度,初始化為零!不用vector的原因是vector入元素只能push_back字尾

int row=0,col=0;

string s;

stringstream ss;

while(getline(cin,s))//一整行輸入

row++;//更新

col=0;

}for(int i=0; i

c string類字串查詢

1 find 函式 find 函式用於在 string 字串中查詢子字串出現的位置,它其中的兩種原型為 size t find const string str,size t pos 0 const size t find const char s,size t pos 0 const 第乙個引數為...

C string類中的字串查詢

c string類中的字串查詢 類string提供了大量查詢功能和搜尋功能,其中比較常用的查詢和搜尋函式是find 函式 find first not of 函式 find first of 函式 find last not of 函式 find last of 函式 rfind 等。find 函式...

C string字串類具體用法

c 大大增強了對字串的支援,除了可以使用c風格的字串,還可以使用內建的 string 類。string 類處理起字串來會方便很多,完全可以代替c語言中的字元陣列或字串指標。string 是 c 中常用的乙個類,它非常重要,我們有必要在此單獨講解一下。使用 string 類需要包含標頭檔案,下面的例子...