真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

解讀STL的string類中各方法的使用場(chǎng)景-創(chuàng)新互聯(lián)

所在頭文件:

主要從事網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、自適應(yīng)網(wǎng)站建設(shè)、程序開(kāi)發(fā)、微網(wǎng)站、微信小程序定制開(kāi)發(fā)等,憑借多年來(lái)在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開(kāi)發(fā)、設(shè)計(jì)、營(yíng)銷、管理等多方位專業(yè)化運(yùn)作于一體,具備承接不同規(guī)模與類型的建設(shè)項(xiàng)目的能力。

實(shí)現(xiàn):typedf basic_string string

所在命名空間:std

功能:標(biāo)準(zhǔn)string提供字節(jié)標(biāo)準(zhǔn)容器的接口,同事增加對(duì)字符串中單獨(dú)的字符的操作。由于標(biāo)準(zhǔn)string是basic_string的一種特化,只能針對(duì)char型,如果字符編碼方式是多字節(jié)或者可變字符序列(eg:UTF-8)那么它仍然按字節(jié)去解讀,而不是按照傳入內(nèi)容的編碼方式。

(1)成員函數(shù)number functions

constructor(構(gòu)造函數(shù))創(chuàng)建string對(duì)象 (公有成員函數(shù))
destructor  (析構(gòu)函數(shù))銷毀string對(duì)象(公有成員函數(shù))
operator=  (賦值運(yùn)算符重載)

將一個(gè)string對(duì)象賦給另一個(gè)string對(duì)象

(公有成員函數(shù))

(2)Iterators

beginiterator begin();
const_iterator begin() const;
返回一個(gè)迭代器指向string對(duì)象的第一個(gè)字符
enditerator end() noexcept;

const_iterator end() const noexcept;

(noexcept是c11對(duì)異常的處理方式)

返回一個(gè)迭代器指向string對(duì)象的結(jié)束字符的位置(‘\0’處),不可引用

如果是空串end=begin

rbeginreverse_iterator rbegin() noexcept;
const_reverse_iterator rbegin() const noexcept;

返回一個(gè)反向迭代器指向string對(duì)象的結(jié)束字符的位置

反向迭代器向后遍歷-->向begin走

rendreverse_iterator rend() noexcept;
const_reverse_iterator rend() const noexcept;

返回一個(gè)反向迭代器指向string對(duì)象的第一個(gè)字符的位置

cbeginconst_iterator cbegin() const noexcept;
返回一個(gè)const迭代器指向string對(duì)象的第一個(gè)字符的位置
cendconst_iterator cend() const noexcept;
返回一個(gè)const迭代器指向string對(duì)象的結(jié)束字符的位置
crbeginconst_reverse_iterator crbegin() const noexcept;
返回一個(gè)const反向迭代器指向string對(duì)象的結(jié)束字符的位置
crendconst_reverse_iterator crend() const noexcept;
返回一個(gè)const反向迭代器指向string對(duì)象的第一個(gè)字符的位置

例子:

// string::begin/end
#include 
#include 
using namespace std:
void test1()
{
  string str ("Test string");
  for(string::iterator it=str.begin(); it!=str.end(); ++it)
  {
      cout << *it;
  }
  cout <

(3)Capacity

size
size_t size() const noexcept;

返回string的字節(jié)個(gè)數(shù)(size_t類型)

size!=capacity

lengthsize_t length() const noexcept;

返回string的字節(jié)個(gè)數(shù)(size_t類型)

length!=capacity

max_sizesize_t max_size() const noexcept;

返回string可以達(dá)到的大長(zhǎng)度

(極限范圍,可能按max_size內(nèi)存分配失?。?/p>

max_size!=capacity

resize
void resize (size_t n);
void resize (size_t n, char c);

重置string的長(zhǎng)度,設(shè)置為n

重置string的長(zhǎng)度,設(shè)置為n,內(nèi)容用c填充

如果n

如果n>string的原length,先拷貝原先的在加上

c的部分(沒(méi)有c,就是空字符)

capacity
size_t capacity() const noexcept;
返回已分配給string的內(nèi)存的字節(jié)個(gè)數(shù)
reversevoid reserve (size_t n = 0);

改變string的capacity為n

不改變length和內(nèi)容

clearvoid clear() noexcept;

清除string的內(nèi)容,讓string變成一個(gè)空串

length=0

emptybool empty() const noexcept;

返回string是否為空,為空返回true,非空返回

false

shrink_to_fitvoid shrink_to_fit();
減小string的capacity到size大小

例子:

#include 
#include 
using namespace std;
// comparing size, length, capacity and max_size
void test1 ()
{
  string str ("Test string");
  cout <<"size: "<< str.size() <

(4)Element access

operator[]
char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;
返回string[pos]的字符
at  char& at (size_t pos);
const char& at (size_t pos) const;
返回string[pop]的字符前會(huì)檢查pos是不是字符范圍內(nèi),超出范圍會(huì)拋異常
backchar& back();
const char& back() const;
返回最后一個(gè)字符的引用
frontchar& front();
const char& front() const;
返回第一個(gè)字符的引用

例子:

#include 
#include 
using namespace std;
//string::operator[]
void test1()
{
    string str ("Test string");
    for(int i=0; i

(5)Modifiers

operator+=

string& operator+= (const string& str);

string& operator+= (const char* s);

string& operator+= (char n);

string& operator+= (initializer_list il);

在現(xiàn)有的string后面添加字符串/字符
append

string& append (const string& str);

string& append (const string& str, size_t subpos, size_t sublen);

string& append (const char* s);

string& append (const char* s, size_t n);

string& append (size_t n, char c);

template
 string& append (InputIterator first, InputIterator last);

string& append (initializer_list il);

在現(xiàn)有的string后面添加字符串/字符
push_back
void push_back(char c);
將字符c添加在string末尾,length++
assign

string& assign(const string& str);

string& assign(const string& str, size_t subpos, size_t sublen);

string& assign(const char * s);

string& assign(const char *s,size_t n);

string &assign(size_t n,char c);

template

 string& assign(InputIterator first,InputIterator last);

string& assign(initializer_list il);

將現(xiàn)有的字符串string替換成新的字符串
insert

string & insert (size_t pos,const string & str );

string & insert (size_t pos,const string & str,size_t subpos,size_t sublen);

string & insert(size_t pos,const char *s);

string & insert(size_t pos,const char *s,size_t n);

string & insert(size_t pos,size_t n,char c);

void insert (iterator p, size_t n, char c);

iterator insert (iterator p, char c);

template
 void insert (iterator p, InputIterator first, InputIterator last);

將現(xiàn)有字符串string的pos位置后面插入字符串或者字符
erase

string & erase(size_t pos=o,size_t len=pos);

iterator erase(iterator p);

iterator erase(iterator first,iterator last);

將現(xiàn)有字符串刪除一部分,length也有減少
replace

string & repalce(size_t pos,size_t len,const string& str);

string & repalce(iterator i1,iterator i2,const string &str);

string & repalce (size_t pos,size_t len,const string & str,size_t subpos,size_t sublen);

string & replace(size_t pos,size_t len,const char *s);

string & replace(iterator i1,iterator i2,const char *s);

string & repalce(size_t pos,size_t len,const char*s,size_t n);

string & repalce(iterator i1,iterator i2,const char*s,size_t n);

string & raplace(size_t pos,size_t len,size_t n,char c);

string & repalce(iterator i1,iterator i2,size_t n,chr c);

template

 string & repalce(iterator i1, iterator i2,InputIterator first,InputIterator last);

將現(xiàn)有字符串的一部分用新的字符串或者字符序列,字符去替換
swapvoid swap(string & str);
兩個(gè)字符串的內(nèi)容進(jìn)行交換
pop_back

void pop_back();

將字符串末尾的字符刪除

例子:

#include 
#include 
using namespace std;

// string::operator+=
void test1()
{
  string name ("John");
  string family ("Smith");
  name +=" K. ";   // c-string
  name += family;  // string
  name +='\n';     // character
  cout << name;
}

//string::append
void test2()
{
  string str;
  string str2="Writing ";
  string str3="print 10 and then 5 more";
  //string& append(const string &str);
  str.append(str2);    //Writing
  //string& append(const string &str,size_t pos,size_t length);
  str.append(str3,6,3);//Writing 10 
  //string& append(const char* s,size_t n);
  str.append("dots are cool",5);//Writing 10 dots 
  //string& append(const char *s); 
  str.append("here: ");//Writing 10 dots here: 
  //string& append(size_t n,char c);
  str.append(10u,'.');//Writing 10 dots here: ..........
  //strin& append(inputIterator first,inputIterator last);
  str.append(str3.begin()+8,str3.end());
  //Writing 10 dots here:......... and then 5 more
  //string& append(size_t n,)
  str.append(5,0x2E);
  //Writing 10 dots here:......... and then 5 more.....
  cout << str <(10,0x2D);
    cout << str <

(6)String operations

c_strconst char * c_str()const;
返回一個(gè)const  char *型的指針,內(nèi)容是string的內(nèi)容+‘\0’
dataconst char * data()const;返回一個(gè)const char *型的指針,即得到string對(duì)象的c_string形式

get_allocator

allocator_type get_allocator()const;返回一個(gè)allocator——type型的string的拷貝
copy
size_t copy(char*s,size_t len,size_t pos=0)const;

拷貝一個(gè)string中的子串到s所指的數(shù)組

(拷貝版不會(huì)自己添加'\0')

find

size_t find(cosnt string &str,size_t pos=0)const;

size_t find(const char *s,size_t pos=0)const;

size_t find(const char *s,size_t pos,size_t n)const;

size_t find(char c,size_t pos=0)const;

查找所找字符串序列第一次出現(xiàn)的位置
substr

string substr(size_t pos=0,size_t len=npos)const;

返回子串
compare

int compare(const string& str)const;

int compare(size_t pos,size_t len,const string &str)const;

int compare(size_t pos,size_t len,const string &str,size_t subpos,size_t

sublen)const;

int compare(const char* s)const;

int compare(size_t pos,size_t len,const char *s)const;

int compare(size_t pos,size_tlen,const char *s,size_t n)const;

比較兩個(gè)字符串

例子:

#include 
#include 
using namespace std;
//string::c_str()
void test1()
{
    string str ("Please split this sentence into tokens");
    char* cstr =newchar[str.length()+1];
    strcpy (cstr, str.c_str());
    // cstr now contains a c-string copy of str
    char* p = strtok (cstr," "); //線程不安全的字符串分割函數(shù)
    while(p!=0)
    {
      cout << p <

(7)成員常量

npos

size_t的大范圍

static const int npos=-1;

(定義時(shí)就初始化)

(8)非成員函數(shù)的重載

operator+串聯(lián)字符串
relational operator

各種運(yùn)算符的重載

swap

交換兩個(gè)字符串,std所屬函數(shù),非string所屬

operator>>

輸入一個(gè)字符串

operator<<

輸出一個(gè)字符串

getline

將輸入的數(shù)據(jù)is傳入到str字符串中,遇到定界符delim時(shí)停止

將輸入的數(shù)據(jù)is傳入到str字符串中,到文件結(jié)束

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:解讀STL的string類中各方法的使用場(chǎng)景-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://weahome.cn/article/gosjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部