string用法詳解 刷題必用C (3)

2021-10-08 06:01:08 字數 4460 閱讀 6150

在使用string類之前,需要包含以下標頭檔案:

#include

1

) string s;

// 生成乙個空字串s

2) string s

(str)

;// 拷貝建構函式生成str的複製品

3) string s

(str, stridx)

;// 將字串str內"始於位置stridx"的部分當作字串的初值

4) string s

(str, stridx, strlen)

;// 將字串str內"始於stridx且長度頂多strlen"的部分作為字串的初值

5) string s

(cstr)

;// 將c字串(以null結束)作為s的初值

6) string s

(chars, chars_len)

;// 將c字串前chars_len個字元作為字串s的初值。

7) string s

(num, 『c』)

;// 生成乙個字串,包含num個c字元

8) string s

(「value」)

; string s=「value」;

// 將s初始化為乙個字串字面值副本

9) string s

(begin, end)

;// 以區間begin/end(不包含end)內的字元作為字串s的初值

10) s.

~string()

;//銷毀所有字元,釋放記憶體

string串要取得其中某乙個字元,和傳統的c字串一樣,可以用s[i]的方式取得。比較不一樣的是如果s有三個字元,傳統c的字串的s[3]是』\0』字元,但是c++的string則是只到s[2]這個字元而已。

string s;

1) s.

empty()

;// s為空串 返回true

2) s.

size()

;// 返回s中字元個數 型別應為:string::size_type

s.length()

;// 返回s中字元個數

3) s[n]

;// 從0開始相當於下標訪問

4) s1+s2;

// 把s1和s2連線成新串 返回新串

5) s1=s2;

// 把s1替換為s2的副本

6) v1==v2;

// 比較,相等返回true

7) `!=

,<

,<=

,>

,>=` //慣有操作 任何乙個大寫字母都小於任意的小寫字母

當進行string物件和字串字面值混合連線操作時,+操作符的左右運算元必須至少有乙個是string型別的:

string s1

(「hello」)

;string s3=s1+」world」;

//合法操作

string s4=」hello」+」world」;

//非法操作:兩個字串字面值相加

s.

find

(t);

//查詢字串t是否是s的子串

如果是則返回第一次匹配的位址,不是則返回-1(string::npos )。

begin()函式返回乙個迭代器,指向字串的第乙個元素。返回值是字串的首位址,取值為*

end()函式返回乙個迭代器,指向字串的最後乙個元素。返回值是字串的首位址,取值為*

string s =

"hello world"

;//賦值

printf

("%c\n",*

(s.end()

-1))

;printf

("%c\n"

,*s.

begin()

);

輸出如下:

d

h

reverse()

;//反轉字串,可規定反轉位置

如下對string類操作:

string s =

"hello world"

;reverse

(s.begin()

, s.

end())

;cout<

char str=

"hello world"

;reverse

(str,str+11)

;printf

("%s"

, str)

;

輸出如下:

dlrow olleh
substr()

;

string s =

"hello world"

;string s1 = s.

substr(6

);//下標6開始到結束

string s2 = s.

substr(0

,11);

//下標0開始,擷取11個字元

coutworld

hello world

to_string() 函式功能:將數字常量(整型的數字)轉換為字串,返回值為轉換完畢的字串。

string str =

"hello world"

;int t =

521;

string s =

to_string((

long

double

)t)+ str;

cout << s << endl;

輸出結果:

521hello world
stoi()函式功能:將string型別的字串轉化為整形數字,返回值為轉換完畢的數字。

注:使用此函式,要注意把編譯器新增c++11標準;在做題時注意選擇c++11。

string s =

"123"

;int a =

stoi

(s);

cout <<

"字串s為:"

<< s << endl;

cout <<

"轉換後為a:"

<< a << endl;

輸出結果:

字串s為:123

轉換後為a:123

string 類模板既提供了 >、<、==、>=、<=、!= 等比較運算子,還提供了 compare() 函式。

主要介紹如下:string字串比較方法

交換兩個字串的字元;

string s1 =

"hello"

;string s2 =

"world"

;cout <<

"s1 = "

<< s1 << endl;

cout <<

"s2 = "

<< s2 << endl;

swap

(s1, s2)

;cout <<

"s1 = "

<< s1 << endl;

cout <<

"s2 = "

<< s2 << endl;

輸出如下:

交換前:

s1 = hello

s2 = world

交換後:

s1 = world

s2 = hello

該函式功能為對已經定義好的string變數賦值:string s;

s.

assign

(str)

;// 把str整體賦值給s

s.assign

(str,1,

3);// 如果str是"iamangel" 就是把"ama"賦給字串

s.assign

(str,

2,string::npos)

;// 把字串str從索引值2開始到結尾賦給s

s.assign

("gaint");

// 不說

s.assign

("nico",5

);// 把』n』 『i』 『c』 『o』 『\0』賦給字串

s.assign(5

,'x');

// 把五個x賦給字串

必刷貪心題

01揹包裸題。因為物品不可分割因此不可貪心。luogu p2374 看起來可以貪心,但是事實上由於體力係數在變化,因此每次選出每堆質量最大的書並不能得到最優解。於是考慮dp。設 dp i j k 表示當前考慮到每堆第 i,j,k 本書。當前狀態只能由 dp i 1 j k dp i j 1 k dp...

String用法詳解

include 注意這裡不是string.h,string.h是c字串標頭檔案這樣我們就宣告了乙個字串變數,但既然是乙個類,就有建構函式和析構函式。上面的宣告沒有傳入引數,所以就直接使用了string的預設的建構函式,這個函式所作的就是把str初始化為乙個空字串。string類的建構函式和析構函式如...

string用法詳解

標準庫型別string,是可變長度的字串行,支援字串間的複製 比較 連線,還支援字串長度查詢和是否為空的判斷,並且可以訪問其中的單個字元。使用它需要標頭檔案。1.字串的連線 s1 s1 s2 將字串2接在字串1後面,後面可以是以雙引號引起來的非string型別的字串,但是必須至少存在乙個string...