C++STL快速入門學習


C++ STL中最基本以及最常用的類或容器無非就是以下幾個:

  • string
  • vector
  • set
  • list
  • map

下面就依次介紹一下它們,並給出一些最常見的使用方法,做到最快入門。

string

首先看看我們C語言中一般怎么使用字符串的

 //創建指針指向字符串常量,這段字符串我們是不能修改的
char* s1="Hello smartZhou";

//想要創建 可以修改的字符串,我們可以使用數組分配空間
char s2[20]="Hello smartZhou";
或者這樣
char s3[ ]="Hello smartZhou";

//當然我們也可以動態分配內存
char *s4=(char *)malloc(20*size(char));
gets(s4);

C++標准庫中的string表示可變長的字符串,它在頭文件string(注意不是string.h)里面。

#include <string>

用string初始化字符串分兩類:用"="就是拷貝初始化,否則就是直接初始化。

string s1;                   //初始化字符串,空字符串
string s2=s1;                //拷貝初始化,深拷貝字符串
string s3="Hello smartZhou"; //直接初始化,s3存了字符串Hello smartZhou
string s4(10,'a');           //s4存放的字符串的10個a,即aaaaaaaaaa
string s5(s4);               //拷貝初始化,深拷貝字符串
string s6("I am smartZhou"); //直接初始化
string s7=string(6,'c');     //拷貝初始化,s7中6個c,即cccccc 

#include <iostream>
#include <string>
using namespace std;

int main()
{
string s1;                   //初始化字符串,空字符串
string s2=s1;                //拷貝初始化,深拷貝字符串
string s3="Hello smartZhou"; //直接初始化,s3存了字符串Hello smartZhou
string s4(10,'a');           //s4存放的字符串的10個a,即aaaaaaaaaa
string s5(s4);               //拷貝初始化,深拷貝字符串
string s6("I am smartZhou"); //直接初始化
string s7=string(6,'c');     //拷貝初始化,s7中6個c,即cccccc 
    
    //string的各種操作
    string s8=s3+s6; //將兩個字符串合並成一個
    s3=s6;                 //將s6中的元素賦值給s3,此時s3="I am smartZhou"

    cin>> s1;

    cout << s2 << endl;
    cout << s3 << endl;
    cout << s4 << endl;
    cout << s5 << endl;
    cout << s6 << endl;
    cout << s7 << endl;
    cout << s8 << endl;
    cout << "s7 size = " << s7.size() << endl; //字符串長度,不包括結束符

    cout << (s2.empty() ? "This string is empty" : "This string is not empty") << endl;;
 
    system("pause");
    return 0;
}

string的IO操作

使用cin讀入字符時,遇到空白就停止讀取。比如程序輸入的是

"Hello    World"

那么我們得到的將是"Hello",Hello后面的空格沒了,后面的World也讀不出來。
如果我們想把整個Helo World讀進來怎么辦?那就這樣做

cin>>s1>>s2;

Hello存在s1里面,World存入在s2里面了。
有時我們想把一個句子存下來,又不想像上面那樣創建多個string來存儲單詞,怎么辦?
那就是用getline來獲取一整行內容。

string str;
getline(cin,str);
cout<<str<<endl;

當把string對象和字符變值及字符串面值混在一條語句中使用時,必須確保+的兩側的運算對象至少有一個是string

string s1=s2+"Hello world";  //正確
string s3="s"+"Hello world"  //錯誤
string s4="hello"+"world"+s1;//錯誤
string s5=s1+“hello”+"world";//正確 上面式子改一下順序,s1放前面,就正確了,注意理解=號右邊的運算順序

  • 未完待續 本文后續更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM