c string 實現逆序

2021-05-25 02:24:39 字數 4115 閱讀 2650

#include#include using namespace std; 

int main()

{ string str("cvicses");

string s(str.rbegin(),str.rend());

cout << s 《一,型別別名

size_type

無符號整型

iterator

迭代器型別

const_iterator

唯讀迭代器

reverse_iterator

逆序迭代器

const_reverse_iterator

唯讀逆序迭代器

different_type

足以儲存兩個迭代器差值的有符號整型

value_type

元素型別

reference

元素左值型別,是value_type&的同義詞

const_reference

元素常量左值型別,是const value_type&的同義詞

二,建構函式

string s1;

預設建構函式

string s2(s1);

初始化為s1的副本

string s3("value");

初始化為字串字面值的副本

string s4(n,'c');

初始化為n個字元為'c'的副本

string s5(cp,n);

初始化為cp所指陣列的前n個字元的副本

string s6(s1,pos);

初始化為s1從下標pos開始的字元的副本

string s7(s1,pos,len);

初始化為s1從下標pos開始長度為len個字元的副本

string s8(b,e);

初始化為迭代器b和e標記範圍內的元素的副本

三,新增元素

s.push_back('t');

尾部新增值為t的字元

s.insert(p,'t');

迭代器p前面插入值為't'的字元,返回指向新字元的迭代器

s.insert(p,n,'t');

迭代器p前插入n個值為't'的字元,返回void

s.insert(p,b,e);

迭代器p前插入由迭代器b和e標記範圍的元素

s.insert(pos,n,'t');

在下標pos前插入n個值為't'的字元

s.insert(pos,s2);

在下標pos前插入string物件s2

s.insert(pos,s2,pos2,len);

在下標pos前插入s2從pos2下標開始的len個字元

s.insert(pos,cp,len);

在下表pos前插入cp所指陣列的前len個字元

s.insert(pos,cp);

在下表pos前插入cp所指的以空字元結束的字串

四,刪除元素

s.erase(p);

刪除迭代器p所指向的元素。返回指向被刪元素後乙個元素的迭代器

s.erase(b,e);

刪除由迭代器b和e標記範圍內的元素,返回指向被刪元素段後乙個元素的迭代器

s.pop_back();

刪除最後乙個元素。返回void。vs2010支援。

s.clear();

刪除所有元素,返回void

五,長度大小

s.size();

返回s中元素個數,型別為size_type

s.max_size();

返回s中可容納最多元素個數,型別為size_type

s.empty();

返回s中元素是否為0的布林值

s.resize(n);

調整s的長度大小,使其能容納n個元素

如果ns.resize(n,'t');

調整s的長度大小,使其能容納n個值為't'的元素

s.capacity();

返回在s需要分配更多儲存空間前能儲存的元素個數,返回型別為size_type

s.reserve(n);

設定s預留n個元素的儲存空間,返回void

六,賦值操作

s1=s2;

刪除s1的所有元素,將s2元素複製給s1

s1.swap(s2);

將s1和s2的內容交換

s.assign(b,e);

重設s的元素:將迭代器b和e標記範圍的元素複製給s

s.assign(n,'t');

重設s為儲存了n個值為't'的物件

s.assign(s2);

不解析s.assign(s2,pos2,len);

不解析s.assign(cp,len);

不解析s.assign(cp);

不解析七,子串操作

s.substr(pos,n);

返回string型別字串,包含從下表pos開始的n個字元

s.substr(pos);

不解析s.substr();

返回s的副本

s.c_str();

返回s的c風格字串

八,string物件修改

操作函式:(args在參數列定義)

將args串接在s後面。返回s的引用

s.replace(pos,len,args);

刪除s中從下標開始的len個字元,用args替代之。返回s的引用。

此版本中,args不能為b2,e2

s.replace(b,e,args);

刪除迭代器b和e標記範圍內所有的字元,用args替代之。返回s的引用。

此版本中,args不能為s2,pos2,len2

args引數定義:

s2string 型別的字串s2

s2,pos2,len2

string型別的字串s2中從下標pos2開始的len2個字元

cp指標cp指向的以空字元結束的陣列

cp,len2

cp指向的陣列中的前len2個字元

n,'t'

字元't'的n個副本

b2,e2

迭代器b2和e2標記範圍內的所有字元

九,string查詢操作

操作函式:(args在引數**定義,返回型別都是size_type或是string::nops)

注意:find

和rfind

是串精確查詢,而

find_first

和find_last

是單個字元查詢。

s.find(args);

在s中查詢args的第一次出現

s.rfind(args);

在s中查詢args的最後一次出現

s.find_first_of(args);

在s中查詢args的任意字元的第一次出現

s.find_last_of(args);

在s中查詢args的任意字元的最後一次出現

s.find_first_not_of(args);

在s中查詢第乙個不屬於args的字元

s.find_last_not_of(args);

在s中查詢最後乙個不屬於args的字元

agrs引數:

't',pos

從下標pos開始,查詢字元't',pos的預設值為0

s2,pos

從下標pos開始,查詢string物件s2,pos預設值為0

cp,pos

查詢cp所指c風格字串,pos預設值為0

cp,pos,n

從下標pos開始,查詢cp所指陣列前n個字元

十,string物件比較(大於返回正數,小於返回負數,等於返回0)

s.compare(s2);

比較s和s2

s.compare(pos1,n1,s2);

讓s中從pos下標開始的n1個字元跟s2做比較

s.compare(pos1,n1,s2,pos2,n2);

讓s中從pos1下標開始的n1個字元與s2中從pos2開始的n2個字元比較

s.compare(cp);

cp,c風格字串

s.compare(pos1,n1,cp);

不解析s.compare(pos1,n1,cp,n2);

不解析

C String簡易實現

kstring.h ifndef kstring h define kstring h include class kstring endif kstring.cpp include kstring.h include 預設建構函式 建立空string kstring kstring kstring...

C String類的實現

參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...

C String類的實現

include using namespace std class string string void private char m data inline string string const char str inline string string const string other i...