C++字符串處理

字符串處理


一小部分借鑑了別人的博客。css

C++裏的字符串的效率不高,常數很大,因此建議儘可能少用。但我以爲,若是時間能夠下來,儘可能用字符串,由於,字符串太方便了,能夠直接加,和比較,刪除也會自動補齊,比字符型數組好多了(可是慢多了)。自從學了C++,第一感受是C++比pascal方便多了,第二每當作的關於字符串的題目,也懷念起pascal了。數組

字符串經常使用命令

string s;//定義spa

命令 例子 做用
+ x+y 將y接在x後面,返回新的字符串的值。
<,>,==,<=,>=,!= x< y 按位比較x,y的大小關係(和整形判斷同樣),返回bool類型值。
= x=y 賦值,將y的值付給x。
find() s.find(s1,pos) 字符串s從pos開始(包括pos)匹配,返回第一個查找到的第一個字符的位置。若找不到,返回string::npos。
empty() s.empty() 返回bool類型值,判斷s是否爲空。
size() s.size() 返回int類型值,字符串s的長度。
length() s.length() 和size(),同樣,能夠互換。
erase() s.erase(pos,len) 字符串s從pos開始(包括pos),刪除len個字符。
substr() s.substr(pos,len) 返回字符串s從pos開始(包括pos)的len個字符。
replace() s.replace(pos,len,s1) 將字符串s從pos開始(包括pos)的len個字符替換成s1。
insert() s.insert(pos,s1) 將字符串s1插入字符串s第pos個位置以前
clear() s.clear() 清空字符串,也能夠s=」「(雙引號)。
swap() s.swap(s1) 將s和s1交換。
c_str() printf(「%s」,s.c_str); 用scanf和printf時要用到,將字符串轉成字符型數組。

經常使用的就這些,其餘其實用不用無所謂(我從沒用過,感受用不上)。
初學者還要注意:
」(單引號):中間是字符。
「」(雙引號):中間是字符串。code

字符串的讀入命令

經常使用的有:scanf,cin,getline內存

命令 例子 做用
scanf() scanf(「%s」,s.c_str()); 在讀人字符串時不是很方便,要加.c_str(),遇空格就停。
cin cin>>s; 十分方便,也是遇空格就停。
getline() getline(cin,s) 整行讀入,遇換行符中止。

以上方法均很慢(scanf相對快不少),數據一大,讀入超時,因此建議用字符型數組讀入,而後轉成字符串,或用scanf。ci

結束符

C++中的字符型數組是必定要有結束符,ANSI碼對應的就是0。若是不加結束符,字符型數組輸出就會出錯,不信,你試試。
結束符能夠用’\0’或EOF來表示。字符串

字符串轉成字符型數組

C ++提供的由C++字符串獲得對應的C_string的方法是使用data()、c_str()和copy(),get

命令 做用
data() 以字符數組的形式返回字符串內容,但末尾’\0’(結束符)。
c_str() 返回一個以‘\0’結尾的字符數組
copy() 則把字符串的內容複製或寫入既有的c_string或字符數組內。

C++字符串並不以’\0’結尾。字符串處理

字符串與文件

咱們經常使用的開文件是博客

freopen("a.in""r",stdin);

若是咱們但願開的文件名存在s這個字符串了,那麼就得這麼寫

freopen(s.c_str(),"r",stdin);

若是你要用C++編一些小東西的話,這的確挺實用的。
我常常去寫些坑人的東西,就怎麼看,在人家不知不覺中,電腦內存就炸了QWQ(我稱之爲核彈,來源於同窗中的某某某)。

字符串的應用至關普遍,用法也至關的多,待往後更新吧!

喜歡就加個關注哦

相關文章
相關標籤/搜索