CSP2019考前字串基礎知識整理

2022-09-04 03:48:06 字數 3786 閱讀 6430

一.string類

1.string的初始化

將string str 賦值為空:

string str="";

string

str;

str.clear();

或賦值為其他字串:

string str1="

absba";

string str2("

lqyz

");

string s(num,"

c");//

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

2.string的遍歷

獲取第j位置的字元:char ch=str.at(j) 或者是:char ch=str[j]

for(int i=0;i<(int)str.length();i++)

cout

<"\n"

;for(int i=0;i<(int)str.length();i++)

cout

<"

\n";

3.string的連線

1.string內部已經過載好了"="運算子(沒有"-"/"*"等運算),即我們可以直接對兩個字串進行相加:

string s1="

lqyz

",s2="

csprp++";

string s3=s1+s2;

cout

輸出結果:lqyzcsprp++

string s1="

lqyz";

s1+="

csprp++";

cout

輸出結果:lqyzcsprp++

2.

string s1="

lqyz

",s2="

csprp++";

cout

<"

"輸出結果:lqyzcsprp++ csprp++

4.string的查詢

1.find()函式

find()函式可以直接查詢乙個或一段字元首字元出現的第乙個位置的下標,如果沒有詢問到,函式會返回-1:

string str="

abskuaebsk";

int a=str.find("

bsk"

);int b=str.find("ak"

);cout

<"

"輸出結果:1 -1

find()函式還可以查詢乙個指定位置之後的乙個或一段字元首字元出現的第乙個位置的下標:find("abc",5):在下標5(包括5)之後查詢abc首字元a首次出現的位置的下標

string str="

abskuabebsk";

int a=str.find("

a",5

);int b=str.find("

a",6

);cout

<"

"輸出結果:5 -1

2.rfind()函式

使用方法與find()函式類似,只是rfind()函式從後往前進行查詢,返回值為這一段字元的首字元的下標

常用它們兩個來判斷該子串是否唯一:如果返回值相同則說明唯一,否則子串不唯一

string str="

abskuabebsk";

int a=str.find("ab"

);int b=str.rfind("ab"

);cout

<"

"輸出結果:0 5

5.string的刪除(erase()函式)

1.erase(i,n); 刪除從i開始的n個字元(i為int型別的數字)

str="

abskuabebsk";

str.erase(

0,2);//

刪除從下標0開始(包括0)的兩個字元

str.erase(3,2);//

刪除新串的從下標3開始(包括3)的兩個字元

cout輸出結果:skuebsk

2.erase(i);刪除下標i之後的所有字元(此處i為int型別的數字)

str="

absfuabebak";

str.erase(

6);//

刪除下標為6(包括6)之後的所有字元

cout輸出結果:absfua

3.erase(i);刪除i位置的字元(注意此處i為string型別的迭代器,而不是int型別的數字,要與2區分)

str="

abskuabebsk";

str.erase(str.begin());

//刪除str[0](首字元)

str.erase(str.begin()+7);//

刪除新串中的str[7],即原串中的str[8]

str.erase(str.end()-1);//

刪除新串中的倒數第乙個字元

cout輸出結果:bskuabes

切記一定不要寫成以下形式:

str="

abskuabebsk";

str.erase(

1);//

因為括號中應是個string型別的迭代器,這樣寫是錯誤的

str.erase(7

);cout

<4.erase(first,last);刪除從first到last之間的字元(first和last都是迭代器)

注意此處刪除的為[first,last)區間的元素,不包括first,不包括last

str="

absfuabebak";

str.erase(str.begin()+3,str.end()-1);//

刪除區間:[3,10)的元素

//此語句相當於str.erase(str.begin()+3,str.begin()+10);

//即刪除區間包括左而不包括右

//注意str.end()-1指的是最後乙個元素

cout輸出結果:absk

6.插入字元

str+="

abs";"

abs"

);str.push_back('a

'),str.push_back('

b'),str.push_back('s'

);//

三種表達形式效果相同

2.insert()函式

str.insert(1,"

hello

");//

在下標為1的位置加入字串,其餘的相對後移

cout輸出結果:ahellobsgddjk

7.輸入輸出

1.cin和cout

注意cin讀入string字串時無法讀入空格,即遇到空格便停止讀入

2.getline()讀入一行(可以讀入空格)

且getline以讀入回車為結束,但它可以單獨的讀入一行回車

while

(getline(cin,str))

比如上述**如果一直輸入回車,程式不會停止(可以輸入ctrl+z進行停止迴圈)

所以應注意:

scanf("

%d\n

",&n);//

此處%d後面必須加乙個\n,消除第一行的回車的影響

for(int i=1;i<=n;i++)

EasyDemo Oracle字串操作知識點總結

一 oracle字串操作 1.字串型別 1.1char和varchar2型別 表示字串資料型別,用來在表示式中存放字串資訊,比如姓名 職業 位址等 char存放定長字元,即存不滿補空格 varchar2存放變長字元,存多少占用多少。如儲存字串 helloworld 共10個英文本母 按照字元的自然順...

關於char和int的字元,字串的基礎知識

無引號代表常量,單引號代表字元,雙引號代表字串。include using namespace std intmain 結果 char 變數 數字 變數得到的是數字作為ascll對應的字元。char 變數 字元 變數得到的就是字元本身,char 變數 數字或字元 出錯,const char的值不能用...

字串基礎

一 字串的三種形式 1.雙引號之間的字串 結尾自動新增 0 2.以 0 結尾的字串陣列。3.string stl 這裡不做過多解釋,以後再做詳解。二 字串的輸入輸出 1.scanf 遇見空格 換行輸入結束。回車時自動新增 0 在處理字元時,輸入回車或者空格,這些字元會寫入輸入流中,儲存在輸入流中,下...