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個,不同的是當字符個數(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ù),當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);//查找字符串
//返回下標
string s1("hello.worl.d");
int pos = s1.find('.',6 );
//第一個參數(shù)是要找的字符、字符串,第二個參數(shù)是從下標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;
//從下標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)超詳細講解順序表
程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示2022-03-03
C++編程模板匹配超詳細的識別手寫數(shù)字實現(xiàn)示例
大家好!本篇文章是關(guān)于手寫數(shù)字識別的,接下來我將在這里記錄我的手寫數(shù)字識別的從零到有,我在這里把我自己的寫代碼過程發(fā)出來,希望能幫到和我一樣努力求知的人2021-10-10

