在使用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...