日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++总结篇(3)String类

發(fā)布時間:2025/3/11 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++总结篇(3)String类 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

string是表示字符串的字符串類,該類的接口與常規(guī)容器的接口基本相同,再添加了一些專門用來操作string的常規(guī)操作。string在底層實際是:basic_string模板類的別名,typedef basic_string<char, char_traits, allocator> string。不能操作多字節(jié)或者變長字符的序列。 在使用string類時,必須包含#include頭文件以及using namespace std標(biāo)準(zhǔn)空間。

1.常見string類容量操作接口:

  • size():返回字符串的有效長度
  • size():length():返回字符串的有效長度,作用于size()相同
  • capacity(): 返回空間總大小
  • empty(): 檢測字符串釋放為空串,是返回true,否則返回false
  • clear(): 清空有效字符
  • resize(n):將有效字符的個數(shù)該成n個
  • 如例:

    void test(string &s) {cout << s.size() << endl; //字符串的有效長度cout << s.length() << endl;//字符串的有效長度cout << s.capacity() << endl;//空間的總大小cout << s.empty() << endl;//檢測字符串是否為空串,是則返回true,反之返回falsecout << s << endl;cout << endl;s.resize(3);//將字符串的有限個數(shù)改為3個cout << s.size() << endl;cout << s.length() << endl;cout << s.capacity() << endl;cout << s << endl;cout << endl;s.clear();//清空字符串cout << s.empty() << endl;cout << s << endl; }

    2.String類對象訪問及遍歷操作:

  • operator[]:返回pos位置的字符,const string類對象調(diào)用
  • begin+ end:begin獲取第一個字符的迭代器+ end獲取最后一個字符下一個位置的迭代器(從前往后打印)
  • rbegin + rend:begin獲取最后一個字符的迭代器 + end獲取第一個字符錢啊一個位置的迭代器(從后往前打印)
  • 如例:

    void test(string &s) {cout << s.operator[](0) << endl;//返回位置0處的字符string::iterator it = s.begin();//獲取第一個字符的迭代器while (it != s.end())//直到與最后一個字符下一位置的迭代器相等則跳出循環(huán){cout << *it << endl;it++;}string::reverse_iterator rit = s.rbegin(); //可抽象理解為獲取第一個字符的迭代器while (rit != s.rend())//可抽象理解為直到與最后一個字符下一位置的迭代器相等則跳出循環(huán){cout << *rit << endl;rit++;}}

    3.String類對象修改操作:

  • push_back(‘c’): 在字符串后尾插字符c
  • append(“world”): 在字符串后追加一個字符串
  • operator+=(str): 在字符串后追加字符串str c_str(): 返回C格式字符串
  • find(‘c’,pos):從字符串pos位置開始往后找字符c,返回該字符在字符串中的位置
  • rfind(‘c’,pos):從字符串pos位置開始往前找字符c,返回該字符在字符串中的位置
  • substr(pos,n):在str中從pos位置開始,截取n個字符,然后將其返回
  • 如例:

    void test(string &s) {s.push_back('c');//尾插一個字符'c'cout << s << endl;s.pop_back();//尾刪一個字符cout << s << endl;s.append(" world");//在字符串后追加一個字符串" world"cout << s << endl;char str[] = "!!!";s.operator+=(str);//在字符串后追加一個字符串strcout << s.c_str()<<endl;//以c格式打印字符串cout << s.find('o', 5)<<endl;//從位置5處向后查找字符'o'并返回其位置cout << s.rfind('o', 5) << endl;//從位置5處向前查找字符'o'并返回其位置cout << s.substr(0, 5)<<endl;//截取位置0到位置5處的字符串 }

    4.string模擬實現(xiàn)

    class String { public:String(const char *str){if (str == nullptr){return;}_str = new char[strlen(str) + 1];strcpy(_str, str);}String(const String &str):_str(new char[strlen(str._str)+1]){strcpy(_str, str._str);}~String(){if (_str){delete[] _str;_str = nullptr;}} private:char *_str; };

    總結(jié)

    以上是生活随笔為你收集整理的C++总结篇(3)String类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。