C++提高第三篇 STL常用容器 string

2021-02-21 編程與數學

結合思維導圖和示例代碼學習。

string構造函數

#include <iostream>#include <string>using namespace std;void test(){    string st1;     cout << "st1:" << st1 << endl;    const char* str = "hello ttbj";    cout << "str:" << str << endl;    string st2(str);     cout << "st2:" << st2 << endl;    string st3(10, 'a');    cout << "st3:" << st3 << endl;    string st4(st3);     cout << "st4:" << st4 << endl;}int main(){    test();    return 0;}

總結:string的多種構造方式沒有可比性,靈活使用即可

string賦值操作

#include<iostream>using namespace std;void test(){    string str1;    str1 = "hello ttbj";    cout << "str1 = " << str1 << endl;    string str2;    str2 = str1;    cout << "str2 = " << str2 << endl;    string str3;    str3 = 'a';    cout << "str3 = " << str3 << endl;    string str4;    str4.assign("hello xrbq");    cout << "str4 = " << str4 << endl;    string str5;    str5.assign("hello xrbq", 5);    cout << "str5 = " << str5 << endl;    string str6;    str6.assign(str5);    cout << "str6 = " << str6 << endl;    string str7;    str7.assign(5, 'a');    cout << "str7 = " << str7 << endl;}int main(){    test();    return 0;}

執行結果:

str1 = hello ttbj

str2 = hello ttbj

str3 = a

str4 = hello xrbq

str5 = hello

str6 = hello

str7 = aaaaa

總結:string賦值方式很多,operator=這種方式是比較實用的

string字符串拼接

#include<iostream>using namespace std;void test(){    string str1 = "我";    str1 += "愛吃東西";    cout << "str1 = " << str1 << endl;    str1 += ':';    cout << "str1 = " << str1 << endl;    string str2 = "紅燒肉";    str1 += str2;    cout << "str1 = " << str1 << endl;    string str3 = "I";    str3.append(" like ");    str3.append("eat abc", 4);    str3.append(str2);    str3.append("str2", 3, 1);    cout << "str3 = " << str3 << endl;}int main(){    test();    return 0;}

執行結果:

str1 = 我愛吃東西

str1 = 我愛吃東西:

str1 = 我愛吃東西:紅燒肉

str3 = I like eat 紅燒肉2

總結:字符串拼接重載版本很多,記住幾種即可。

string查找和替換

void test(){        string str1 = "abcdefgde";    int pos = str1.find("de");    if(pos == -1)    {        cout << "未找到" << endl;    }    else    {        cout << "pos = " << pos << endl;    }    pos = str1.rfind("de");    cout << "pos = " << pos << endl;
str1.replace(1, 3, "1111");    cout << "str1 = " << str1 << endl;}int main(){ test(); return 0;}

執行結果:

pos = 3

pos = 7

str1 = a1111efgde

總結:

Find查找是從左往右,rfind從右往左

Find找到字符串後返回查找的第一個字符位置,找不到返回-1

replace在替換時,要指定從哪個位置起,多少個字符,替換成什麼樣的字符串

string字符串比較

void test(){    string s1 = "xrbq";    string s2 = "ttbj";    int ret = s1.compare(s2);    if(0 == ret)    {        cout << "s1 等於 s2" << endl;    }    else if(ret > 0)    {        cout << "s1 大於 s2" << endl;    }    else    {        cout << "s1 小於 s2" << endl;    }   }int main(){    test();    return 0;}

執行結果:

s1 大於 s2

總結:

字符串對比主要是看兩個字符串是否相等,判斷誰大誰小意義並不是很大

string字符存取

void test(){    string str = "hello world";    for(int i = 0; i < str.size(); i++)    {        cout << str[i] << " ";    }    cout << endl;
for(int i = 0; i < str.size(); i++) { cout << str.at(i) << " "; } cout << endl; str[0] = 'y'; str.at(1) = 'y'; cout << str << endl;}int main(){ test(); return 0;}

執行結果:

h e l l o   w o r l d 

h e l l o   w o r l d 

yyllo world

總結:string字符串中單個字符存取有兩種方式,利用[]或at

string 插入和刪除

void test(){    string str = "hello";    str.insert(1, "111");    cout << str << endl;    str.erase(1, 3);     cout << str << endl;}int main(){    test();    return 0;}

執行結果:

h111ello

hello

總結:插入和刪除的起始下標都是從0開始

string子串

void test(){    string email = "hello@qq.com";    int pos = email.find("@");    string username = email.substr(0, pos);    cout << "username: " << username << endl;}int main(){    test();    return 0;}

執行結果:

username: hello

總結:靈活運用求子串功能,可以在實際開發中獲取有效的信息

                             - END -

相關焦點

  • 關於C++ std::string類內存布局的探究
    探究std::string有效數據存儲結構那好吧有問題來了就著手解決。從上文我們知道,ZooAnimal以如下的內存模型存儲數據成員:>一、棧中std::string的內存分配我們首先進行全局重載new和delete運算符,在於當進行堆內存分配時,顯式告知用戶#include <iostream>#include <string>#include <cstdlib>using namespace
  • Excel函數應用篇:提高效率的常用8個函數
    在工作中,我們真正用到的Excel函數通常在50個,常常用到的函數則更少,通常也就10來個,因此我們有必要選擇一些最為常用的Excel函數來進行學習
  • python格式化輸出:f-string格式化輸出
    從%s格式化到format格式化再到f-string格式化,格式化的方式越來越直觀,f-string的效率也較前兩個高一些,使用起來也比前兩個簡單一些。① f-string用大括{ }表示被替換欄位,其中直接填入替換內容即可。
  • 廢水水樣保存方法九種汙染因子及溫度、容器、時間等要求
    儲存水樣的容器可能吸附待測組分,或者沾汙水樣,因此要選擇性能穩定、雜質含量低的材料製作的容器。常用的容器材質有硼矽玻璃、石英、聚乙烯和聚四氟乙烯。其中石英和聚四氟乙烯雜質含量少,但價格昂貴,一般常規監測中廣泛使用聚乙烯和硼矽玻璃材質的容器。不能及時完成分析的水樣,則應根據不同監測項目的要求,採取適宜的保存方法。
  • 玻璃瓶:最健康的包裝容器
    近幾十年來,工業技術的不斷發展,包裝容器不僅樣式越來越新穎,材質也越來越多,例如塑料、複合材料、專用包裝紙、馬口鐵、鋁箔等多種新型包裝材料。處於同其他包裝材料的劇烈競爭之中,玻璃材料依然是不可代替的。  玻璃包裝容器在包裝領域的優點:  1、玻璃材料具有良好的阻隔性能,可以很好的阻止氧氣等氣體對內裝物的侵襲,同時可以阻止內裝物的可揮發性成分向大氣中揮發; 2、玻璃瓶可以反覆多次使用
  • 容器簡史:從20世紀70年代的chroot到2016的Docker
    儘管慶典已經結束,我將帶你開啟另一段旅程:在Docker開啟容器大門之前虛擬化容器的歷史。請走進我的時光機器,藉助Wikipedia以及其他資源,讓我們回到1979年,容器的概念被首次提出。1979年,我(作者)還不到10歲。在Unix V7的開發過程中,引進了chroot系統調用,可以重定向進程及其子進程的root目錄到文件系統上的新位置。
  • 表格製作Excel教程:11個常用的操作技巧
    哈嘍幾天不見了~今天分享Excel表格的11個常用乾貨技巧,幫你快速提高工作效率。如何進行多行多列的數據快速求和匯總呢?掌握對的方法,其實很簡單:只要選中求和數據區域,然後按組合鍵<Alt+=>,一秒出結果。    輸入姓名時,不只有三個字的姓名還有兩個字的姓名,你還在用空格一個個敲齊嗎?這樣太辛苦啦!
  • 壓力容器管理與操作人員主要職責
    貫徹執行國家法律、法規和安全技術規範,組織編制並且適時更新安全管理制度;2.組織制定壓力容器安全操作規程;3.組織開展安全教育培訓;4.組織壓力容器驗收、辦理壓力容器使用登記和變更手續;5.組織開展壓力容器定期安全檢查和年度檢查工作;6.編制壓力容器的年度定期檢驗計劃,督促安排落實定期檢驗和隱患治理;7.組織制定壓力容器應急預案並且組織演練
  • Excel教程:最常用日期函數匯總(收藏篇)
    今天一起來看下常用日期函數的用法!1、DATE函數DATE:返回在日期時間代碼中代表日期的數字。函數語法:DATE(year,month,day)函數DATEVALUE:將存儲為文本的日期轉換為Excel識別為日期的序列號。
  • 涉及高血壓、糖尿病、抗癌藥、抗菌素等常用藥!第三批國家集採藥品16日落地慶雲
    11月16日,第三批國家組織集中採購的55個藥品落地慶雲縣,患者可在縣內所有公立醫療機構買到這批
  • 第一屆全國「壓力容器、壓力管道帶壓密封 技術培訓班」(2020)在天津市濱海新區舉辦
    2020年10月20~23日,第一屆全國「壓力容器、壓力管道帶壓密封技術培訓班」在天津市濱海新區舉辦,此次培訓由中國設備管理協會石油石化檢維修技術中心
  • 食藥總局提醒:食醋不要存放在不鏽鋼容器中
    白醋常用於涼拌菜,加熱烹飪時容易揮發。此外,酸味能增強人對鹹味的感知,炒菜時添加少量食醋不僅改善口感,也有利於減少食鹽的攝入量。   食醋的貯存有講究   食醋酸度較高,不要存放在不鏽鋼容器中,最好使用玻璃瓶存放。
  • 公司的一個面試題:如何用CSS讓一個容器水平垂直居中?
    <div class="div1">              <div class="div2">              </div>          </div>      </body>   </html>問題:如何讓class為div2的內部容器上下左右居中
  • 英語學習:聚會常用英文
    為著全球基督身體交通的需要,盼望弟兄姊妹可以學習一些主內常用的英文,帶進海外相調甜美的交通。
  • 庫爾勒:市民用微波爐附贈容器加熱一分鐘 微波爐突然著火 究竟什麼樣的容器不能進微波爐?
    記住:金屬器皿÷餐具或者容器都不能放到微波爐,永遠不要!午餐袋午餐袋並不像看起來這麼無害。紙袋,塑膠袋和報紙都不能進微波爐。正如農業部報告所說「它們不安全,可能起火,而且可能產生有毒氣體。高溫可能會點燃紙袋,導致爐內起火……」就醬!
  • 家居 微觀盆栽 ,玻璃容器中的小世界
    其中各種重要的自然過程,好像光合作用,呼吸作用和水分循環在容器內不斷運作及循環。玻璃盆栽雖小,可是一個五臟俱全的微生境呢。(特殊微小生物的特殊生態環境)所需材料:玻璃容器、青苔、水苔、火山石、泥土、背景植物、噴水壺、長柄鉗子製作步驟:
  • 【我的廚房菜譜第69篇】提高免疫力的菜:蘑菇炒紫洋蔥胡蘿蔔西葫蘆
    【我的廚房菜譜第69篇】提高免疫力的菜:蘑菇炒紫洋蔥胡蘿蔔西葫蘆作者何麗微信公眾號何麗的詩文館2016
  • C++ 17 標準正式發布:終於能更簡單地編寫和維護代碼了!
    作為標準庫中新的關鍵「詞彙類型」,std::string_view 和 std::optional 將會以函數參數和返回類型的形式廣泛使用。這允許開發者編寫更簡單的籤名,例如:在字符串類型上可以用 std::string_view 替代模板化 (Templatizing);開發者可在函數體內更多地用 std::variant 和 std::any 類型作為類成員,並內部使用。
  • 《審訊室》德國篇:評分最高的第三集,到底發生了什麼?
    觀眾對於四個國家所出的不同版本褒貶不一,其中德國篇是四個版本裡評分最高的,我們此前已經向大家推薦過《審判室:德國》(審訊室裡上演貓鼠遊戲?網飛這部罪案劇讓人眼前一亮!),簡單提及了首集的部分內容。              這次要說的第三集,在IMDb上的單集評分為8.4,是所有版本裡口碑最好的一集。