這次去北京理工參加複試,當時的上機題目的第2題是一道字串有關的題目:
大致的題目是這樣的,在乙個已有序列中有eric,machel,peter,要求插入
jhon,以後按照字母順序顯示排好,並且可以多次輸入,如果有相同的提示重新輸入。
當時的我對string類並不了解,所以用的是鍊錶和動態生成字串的方式。後來碰到乙個考生,他告訴我有string類做非常的方便。於是我就淺顯的看看了。
標準c++庫字串類std::string的用法
#include
std::string s1;
std::string s3(s2);
std::string s2("this is a string");
begin 得到指向字串開頭的iterator
end 得到指向字串結尾的iterator
rbegin 得到指向反向字串開頭的iterator
rend 得到指向反向字串結尾的iterator
size 得到字串的大小
length() 和size函式功能相同
max_size 字串可能的最大大小
capacity 在不重新分配記憶體的情況下,字串可能的大小
empty 判斷是否為空
operator 取第幾個元素,相當於陣列
c_str 取得c風格的const char* 字串
data 取得字串內容位址
operator= 賦值操作符
reserve 預留空間
swap 交換函式
insert 插入字元
push_back 追加字元
erase 刪除字串
clear 清空字元容器中所有內容
resize 重新分配空間
assign 和賦值操作符一樣
replace 替代
copy 字串到空間
find 查詢,返回基於0的索引號
rfind 反向查詢
find_first_of 查詢包含子串中的任何字元,返回第乙個位置
find_first_not_of 查詢不包含子串中的任何字元,返回第乙個位置
find_last_of 查詢包含子串中的任何字元,返回最後乙個位置
find_last_not_of 查詢不包含子串中的任何字元,返回最後乙個位置
substr(n1,len) 得到字串從n1開始的長度為len的子串
比較字串(支援所有的關係運算子)
compare 比較字串
operator+ 字串鏈結
operator+= += 操作符
operator== 判斷是否相等
operator!= 判斷是否不等於
operator< 判斷是否小於
operator>> 從輸入流中讀入字串
operator<< 字串寫入輸出流
getline 從輸入流中讀入一行
這樣就方便多了,這個程式的核心方法是對字串排序,而用陣列的方式就比較簡單,避免出現懸掛指標的情況。
簡易版的演算法如下:
#include
#include
const int max=50;
using namespace std;
void sort(string student,int len)//直接插入
排序演算法
}void main()
string物件和C風格字串
我們都知道允許使用字串字面值來初始化string物件 string s hello world c 規定,任何出現字串字面值的地方都可以用以空字元結束的字元陣列來替代 上述性質反過來並不成立 如果程式的某處需要乙個c風格字串,無法直接用string物件來替代它。例如 不能使用string物件直接初始...
C 字串處理string
之所以拋棄char 的字串而選用c 標準程式庫中的string類,是因 為他和前者比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯。我們盡可以把它看成是c 的基本資料型別。首...
C 字串string操作
相比於c語言而言,c 提供了太多的寫好了的型別和方法,其中string型別就是用起來特別方便的一種。那麼問題來了,既然有c語言的char型,為什麼還要學習string型別呢?我碰到過的也是最主要的乙個原因就是string型別更節省空間,用多少開多少,而char型別的陣列就不是了,必須開最大值。其次還...