C 學習筆記(八)string類

2021-10-01 02:41:13 字數 4462 閱讀 3832

學會了string類,自己就不用建字串類了

string類

1、string類是模板類:

typedef basic_string<

char

> string;

使用string類要包含標頭檔案

2、string物件的初始化

string s1

("hello");

string s2(8

,'xs');

string s3 =

"world"

;

錯誤的方式:

string error1 =

'hello'

;// 錯誤是因為這種形式賦字串

string error2

('world');

string error3(8

);string error4 =

22;

可以將字元賦值給string物件

string s;

s ='a'

;

3、string類的成員函式

(1)、string類物件長度用成員函式length()可讀取

(2)、string類物件支援資料流運算子

string str

("hello world");

cout>str;

(3)、string物件支援getline函式

string s

getline

(cin,s)

;

4、string的賦值與連線

(1)、用=賦值

string s1,s2;

s1 = s2;

=運算子已經被過載

(2)、用assign成員函式複製

string s1

("hello"

),s2;

s2.assign

(s1)

;

(3)、用assign成員函式部分複製

string s1

("hello world"

),s3;

s3.assign

(s1,1,

3)//在s1的下標為1的字元開始複製3個字元給s3

注:複製語句兩個數字一組,第乙個代表位置,第二個代表複製多少

(4)、單個字元複製

s2[1]

= s1[3]

='a'

;

(5)、逐個訪問string物件中的字元

string s1

("hello");

for(i =

0, i < s1.length,i++

)

at成員函式會做範圍檢查,若超出範圍,會給出out_of_range異常,而[ ]不會做範圍檢查

(6)、用+運算子連線字串

string s1

("hello "),

s2("world");

s1 +

= s2;

cout<("world"),

s2("hello ");

s1.(s2)

;cout

1,s2.

size()

); s1的字元數,size與length相同

// 從s2下標為1開始複製size個字元,若字串沒有這麼多字元,則複製到字串最後乙個字元

5、string類的比較

用==,>=,<=,>,<,!=

返回的是bool型別,成立返回true,否則返回false

也可用成員函式compare比較string

string s1

("hello"),

s2("s")

s1.compare

(s2)

;// 相同返回0,大於返回1,小於返回-1.

6、子串:用成員函式substr生成子串

string s1

("hello world"

),s2;

s2 = s1.

substr(4

,5)// 在s1的下標為4的位置複製5個字元 我搞不懂這個和複製有啥區別。。。

7、交換string:使用swap成員函式

string s1

("hello"),

s2("world");

s1.swap

(s2)

;

8、查詢string中的字元

1、從頭往後找:find()

string s1

("asd");

s1.find

("as"

);

在s1中從前往後查詢"as"出現的第一次位置。如果找到,返回"a"位置,若沒找到,返回string::npos(string中定義的靜態常量)

2、從後往前找:rfind()

string s1

("asd");

s1.rfind

("as");

s1.rfind

("as",2

)從下標為2的開始找

s1從後往前查詢,"as"第一次出現的位置,找到,返回"a"的下標,若找不到,返回string::npos

3、查詢乙個字串的任意乙個字元:find_first_of

string s1

("aaaa");

s1.first_find_of

("abcd"

);

在s1中查詢"abcd"字串的任意乙個字元出現的位置,若有就返回這個字元第一次出現的位置。

4、查詢乙個字串的任意乙個字元:find_last_of

string s1

("aaaa");

s1.first_last_of

("abcd"

);

和上面類似,只不過是返回這個字元最後一次出現的位置。

注:若是有多個,就按被查字串的字元順序。

5、查詢不在字串內的字母的位置:find_first_not_of()

從前往後查詢,給出的字串中不在(「abcd」)中的字元,返回第一次出現的位置。

6、查詢不在字串內的字母的位置:find_last_not_of()

從後往前查詢,給出的字串中不在(「abcd」)中的字元,返回第一次出現的位置。

7、刪除string類中的字元:erase();

string s2

("hello world");

s2.erase(5

);// 去掉下標5及以後的字元

8、替換string類中的字元:replace();

string s1

("hello world");

s1.replace(2

,3,"hello");

// 將s1中下標2開始3個字元換成了"hello"

注:這個函式可以改變string物件的大小

9、string中插入字元:insert();

string s1

("hello"),

s2("world");

s1.insert(2

,s2)

;// 將s2插入到s1的下標為2的位置

s1.insert(2

,s2,3,

4)// 將s2的下標為3開始的4個字元插入到,s1的下標2的位置

10、轉換成c語言式char *字串:c_str

11、字串拷貝:copy()

s1.

copy

(s2,0,

5);s2[5]

=0;

從s1的下標0的位置開始製作乙個長度為5的字串,並把它賦給s2,返回值表明實際複製字串的長度。

12、字串流處理

除了標準輸入輸出流和檔案輸入輸出流外,還可以進行string流輸入輸出。

使用istringstream,ostringstream進行字串的輸入輸出,也稱記憶體輸入輸出。

標頭檔案為

ostringstream outputstring

(output)

int a =10;

outputstring<<

"this"

<

C 學習之string類

string類 string初始化 示例 include includeusing namespace std int main string s1 hello world 把字串賦給當前字串s1 cout string字元操作 示例 include includeusing namespace s...

c 筆記(八) 類

類,物件,類成員 字段 方法 用類建立乙個物件,用new運算子,類裡面用來描述特徵的變數稱為這個類的字段 car car new car 使用物件呼叫欄位時,用點運算子得到欄位並賦值,如果在類外部使用欄位時,字段一定用public修飾 red 100.5 bmw 用點運算子點出來的成員,前面如果是 ...

C 學習筆記八

24 子物件 當乙個類的成員時另乙個類的物件時,該物件就為子物件。子物件即是物件的成員 當類中出現了子物件 物件成員 該類的建構函式要包含對子物件的初始化,通常採用成員初始化列表的方法來初始化子物件 include class a void print class b 成員初始化列表,私有成員可以通...