C++中String類的常用接口函數(shù)總結(jié)
string
string時表示字符串的字符類
//使用 string類包含#include 頭文件 以及 using namespace std
string類的常見構(gòu)造
#include <iostream> #include <string> using namespace std; int main() { string s;//string() string s1("hello world");//string(const char* s) string s2(s1);//string(const string& s) cout << s << endl; cout << s1 << endl; cout << s2 << endl; return 0; }
string容量相關(guān)接口 (size(),capacity(),clear(),empty)
1.size()是元素個數(shù)
//. size()與length()方法底層實現(xiàn)原理完全相同,引入size()的原因是為了與其他容器的接口保持一致,一般情況下基本都是用size()。
2.capacity()是容積
3.clear()將字符串清空,但不改變底層空間大小 //clear()只是將string中有效字符清空,不改變底層空間大小。
4.empty()檢測字符串是否為空是返回true ,否則返回false
resize()接口函數(shù)
resize(size_t n) 與 resize(size_t n, char
c)都是將字符串中有效字符個數(shù)改變到n個,不同的是當(dāng)字符個數(shù)增多時:resize(n)用0來填充多出的元素空間,resize(size_t n, char
c)用字符c來填充多出的元素空間。注意:resize在改變元素個數(shù)時,如果是將元素個數(shù)增多,可能會改變底層容量的大小,如果是將元素個數(shù)減少,底層空間總大小不變。
int main() { string s1("hello world"); cout << s1.size() <<endl; cout << s1.capacity() << endl; s1.resize(34,'y');// 將s1中有效字符個數(shù)增加到34個,多出位置用'y'進行填充 s1.resize(13); cout << s1.size() << endl; cout << s1.capacity() << endl; cout << s1 << endl; s1.resize(3, 'y'); cout << s1.size() << endl; cout << s1.capacity() << endl; cout << s1 << endl; return 0; }
reserve()
//reserve(size_t res_arg=0)
為string預(yù)留空間,不改變有效元素個數(shù),當(dāng)reserve的參數(shù)小于string的底層空間總大小時,reserver不會改變?nèi)萘看笮 ?/p>
string類對象的訪問及遍歷操作
//operator[]
//迭代器->begin(),end() / rbegin() ,rend()
//for
1.operator[]
2.迭代器
int main() { string s1("hello world"); string::iterator vit = s1.begin(); while (vit != s1.end()) { cout << *vit ; vit++; } cout << " " << endl; string::reverse_iterator it = s1.rbegin(); while (it != s1.rend()) { cout << *it; it++; } return 0; }
3.范圍for
int main() { string s1("hello world"); for (auto tmp: s1)//tmp只是原數(shù)組拷貝 不改變原數(shù)就改成引用會改變 { cout << ++tmp; } cout << " " << endl; for (auto& tmp : s1) { cout << ++tmp ; } return 0; }
string類對象的修改和操作
插入(拼接)方式
push_back() //加字符
append()//加字符串
operator()//加字符或字符串都行
int main() { string s1("hello world"); s1.push_back('a'); s1.append("asddfs"); s1 += 'a'; s1 += "sfasd"; cout << s1; return 0; }
正向和反向查找:find() + rfind()
int main() { string s1("hello.world"); int pos1 = s1.find('.'); string s ("string.cpp"); int pos = s.rfind('.'); string s2("aahello.world"); int pos = s2.find(s1);//查找字符串 //返回下標(biāo) string s1("hello.worl.d"); int pos = s1.find('.',6 ); //第一個參數(shù)是要找的字符、字符串,第二個參數(shù)是從下標(biāo)n開始查找 cout << pos; return 0; // npos是string里面的一個靜態(tài)成員變量 // static const size_t npos = -1; //如果未找到匹配項,則該函數(shù)返回string::npos。 }
截取子串:substr()
string substr (size_t pos = 0, size_t len = npos) const
int main() { string s1("hello.world"); int pos1 = s1.find('.'); string s2("aahello.world"); string s3( s1.substr(1, 5)); cout << s3 << endl; //從下標(biāo)pos ,截取n個 return 0; //返回字符串對象 }
getline()
//非字符類的接口函數(shù)
istream& getline (istream& is, string& str)
int main() { string s1; getline(cin,s1); cout << s1 << endl; return 0; }
reverse用法
//非string接口函數(shù),常用于字符串反轉(zhuǎn) void reverse (BidirectionalIterator first,BidirectionalIterator last); 參數(shù)是迭代器 (左閉右開)
#include <iostream> #include <string> using namespace std; int main() { string s ("race a car"); reverse(s.begin(), s.end()); cout << s << endl; return 0; }
//begin()是字符串第一個字符
//end()是字符串最后一個字符的下一位
//rbegin()是最后一個元素
//rend()是第一個元素
到此這篇關(guān)于C++中String類的常用接口函數(shù)的文章就介紹到這了,更多相關(guān)C++ String類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?數(shù)據(jù)結(jié)構(gòu)超詳細(xì)講解順序表
程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示2022-03-03C++編程模板匹配超詳細(xì)的識別手寫數(shù)字實現(xiàn)示例
大家好!本篇文章是關(guān)于手寫數(shù)字識別的,接下來我將在這里記錄我的手寫數(shù)字識別的從零到有,我在這里把我自己的寫代碼過程發(fā)出來,希望能幫到和我一樣努力求知的人2021-10-10