C 字串物件(string)

2021-05-22 23:16:54 字數 1932 閱讀 6708

這次去北京理工參加複試,當時的上機題目的第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型別的陣列就不是了,必須開最大值。其次還...