一小部分借鑑了別人的博客。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(我稱之爲核彈,來源於同窗中的某某某)。
字符串的應用至關普遍,用法也至關的多,待往後更新吧!