c string知識點總結

2021-08-01 15:19:34 字數 4062 閱讀 9826

知識點儲備1:問題: 如何將乙個字元(char)轉化為字串( string ) ?

答案:直接轉化的方法是沒有的,只能通過陣列來進行間接轉化,**例子如下:

#include

#include

using namespace std;

int main();    //在字元陣列中末尾加上\0

string s1=s;                            //字元陣列可以直接給string型別賦值

cout<    }

知識點儲備2:c++中除了string物件必要的那些的操作,還會涉及到處理string物件中的字元(讀取或者改變),數字:number   字母:alphabet

cctype標頭檔案中定義了一組標準庫函式處理這部分工作,下面試主要函式名及其定義:

(1)、isalnum(c)  當c為字母(al)或數字時(num)為真;

(2)、isalpha(c)   當c為字母(alpha)時為真;

(3)、isdigit(c)     當c是數字時為真;

(4)、islower(c)   當c是小寫字母時為真;

(5)、isspace(c)  當c是空白字元時為真;

(6)、isupper(c)  當c時大寫字母時為真;

(7)、tolower(c)  如果c是大寫字母,輸出對應的小寫字母;否則原樣輸出c;

(8)、toupper(c) 如果c是小寫字母,輸出對應的大寫字母;否則原樣輸出c;

(9)、使用範圍for語句可以處理字串中的每個字元

for(auto c: str)

cout<   使用範圍for語句改變字串中的字元

for(auto &c:str)

c=toupper(c);

只處理string字串中一部分字元:使用下標(型別為string::size_type)或者迭代器

知識點儲備3:c++中乙個string型別str和乙個字元型別ch,,str+=ch;(即可以將字串和字元進行相加重新賦值給乙個字串型別)   

知識點儲備4:一、額外的string操作

大部分操作都是提供string和c風格字元陣列之間的轉換

(1)、構造string其他方法

string s(cp,n);                    //s為cp指向的陣列中前n個字元的拷貝,注意此陣列至少包含n個字元

string s(s1,pos2);             //s為string s2從下標pos2開始的字串拷貝,注意pos2>s2.size(),建構函式未定義

string s(s1,pos1,len1);   //s為string s1從下標pos1開始的len1個字串的拷貝

(2)、灰常重要的乙個函式 substr操作

substr:原始字串一部分或者全部的拷貝   substr(開始位置,計數值),第二個引數可以預設

如果開始位置超過了string大小,則函式會丟擲乙個out_of_range異常

(3)、將string 變數轉化為字元指標型       使用函式 c_str()

#include

......

string s="yuhuaihzu";

const char *p= s.c_str();

二、改變string的方法

(1)迭代器版本的insert和erase函式

新增元素:

string的str.insert(p,t)  在迭代器p指向的元素之前建立乙個值為 t 的元素,返回指向新新增的元素的迭代器 

str.insert(p,n,t)  在迭代器p指向的元素之前建立n個值為 t 的元素,返回指向新新增第乙個元素的迭代器 

str.insert(p,b,e)  在迭代器p指向的元素之   前插入迭代器b和e指定範圍內的元素,返回指向新新增第乙個元素的迭代器

刪除元素:

string的str.erase(p) 為刪除迭代器p所指定的元素,返回乙個指向被刪除元素之後元素的迭代器,若p指向尾元素,則返回尾後迭代器,若p是尾後迭代器,      則函式行為未定義; 

str.erase(b,e)  位刪除迭代器b和e所指定範圍內的元素,返回乙個指向最後乙個被刪除元素之後元素的迭代器;

(2)下標版本的insert和erase函式

新增元素:

string的str.insert(pos,args) 在pos之前插入args指定的字元,pos為下標;除了這個形式,還有各種省略引數,或者加一些別的引數,比如,

balabala

刪除元素:

string的str.erase(pos,len)刪除從pos開始的len個字元,如果len省略,則刪除pos位置開始到結尾

s.assign(args)  將s中的字串替換為args指定的字元,返回乙個指向s的引用;

s.replace(range,args) 刪除s中range範圍內的元素,替換為args中的字元,返回乙個指向s的引用

注: range為乙個下標,或者一對指向迭代器範圍;

args可以為下列形式:

str  字串str

str,pos,len     str從pos開始最多len個字元

cp,len       字元陣列前len個字元

cp                 cp指向以空字元結尾的字元陣列

n,c                n個字元c

b,e                迭代器b和e指定的範圍內的字元

(4)string搜尋操作

(5)數值轉換  有兩個非常重要的函式

atoi   將字串轉換成整數          使用函式atoi必須要注意,它的形參為字元指標形,比如string s; int num =atoi(s.c_str()); 這樣才是正確的

to_string 將整數轉換為字串

三、1、注意:尋找字串中的某個字元,和尋找容器中的某個值,find函式的形參是不一樣的

(1)尋找某個字元在字串中的位置      

如果找到,返回下標,否則返回-1

const string helper1 = "0123456789abcdefabcdef";

const string helper2 = "084c2a6e195d3b7f5d3b7f";

string str="abcdef";

for(int i=0;iint n = helper1.find(str[i]);

if(n != -1)

str[i] = helper2[n];}

(2)尋找某個值在容器中第乙個該值所在的位置

vectorresult=;

int num=8;

auto b= result.find(reslut.begin(),result.end(),num);//尋找值num在容器result中的位置,返回迭代器,若容器中不存在該值,則會返回尾後迭代器reslut.end()

if(b==reslut.end())

//說明容器中不存在該值

else

//容器存在該值

2、關於標準輸入輸出流的使用,sstream

string line,str;

while(getline(cin,line))

cout<}

3、華為字元加密這道題目,使用find函式,找到返回字元位置,未找到返回-1

關於replace函式的使用  str.replace(start_pos,len,s)   start_pos為起始位置,len為要替換的長度,s為要替代的字串

舉例:  string s="abcdefghijklm";      string str=yuhuai ;   s.replace(0,str.size(),str);   cout< 4、

知識點總結

1,迴圈中的中斷 continue 跳出此次迴圈,繼續for迴圈 break 跳出當前for迴圈 return 跳出當前方法 2,字串的操作 componentseparatedbystring stringbyreplacingoccurencesofstring withstring iskin...

知識點總結

oncreate onstrat onresume onpause onstop onrestart ondestroy standard 啟動activity都會產生乙個新的activity 預設模式 singletop 啟動activity允許多個,但不允許重疊 singletask 只允許有乙...

知識點總結

function go go 呼叫 go為變數名 setinterval go,1000 1000ms clearinterval 關閉定時器 function abc a,b 2,3 5undefined 未定義 null 空 nan 非數值 string 字串 var a 123 數字型別 va...