c++中的string


要弄清c++中的string如何工作,首先要弄清c++中的字符是如何工作的,字符是什么

#include<iostream>

int main()
{
    const char *name= "Wangtn";
    //name[2]='s';
    std::cin.get();
}

如果沒有const,下面注釋掉的代碼可以正常運行,但是const表示常量,所以不能進行修改。

 

 

可以看到在內存中,字符是以ACSII形式存儲在內存中的,字符串的后面以00結尾,這是字符串結束的標志。在c++中單個字符用單引號('),字符串用雙引號(")。

#include<iostream>

int main()
{
    const char *name= "Wangtn";
    char name2[6] = { 'W','a','n','g','t','n' };
    std::cout << name2 << std::endl;
    //name[2]="s";
    std::cin.get();
}

name2沒有加上結束符0,所以打印的時候程序不知道何時終止,就會出現如下結果

 

 

 

 如果我們做如下修改

char name2[7] = { 'W','a','n','g','t','n' ,'\0'};

或者直接將'\0'換成0(沒有單引號),程序正常運行。

字符串數據類型在c++標准庫中有一個類叫string,是一個模板類

#include<iostream>
#include<string>

int main()
{
    std::string name= "Wangtn";
    std::cout << name << std::endl;

    std::cin.get();
}

c中有strlen,strcpy等函數來處理字符串數組,這些方法以及類似的功能都在c++的string類中有定義,可以直接調用

如果想讓兩個string相加,直接定義是不行的

std::string name="Wangtn"+"sau";

有兩種修改方式

std::string name="Wangtn";
name+="sau";
std::string name=std::string("Wangtn")+"sau";

在函數中傳入string,如果不使用引用或者指針,那么函數內的操作將不會影響傳入值本身,參與計算的都是傳入值的復制,如果使用引用就會改變傳入值

 

 

 

 加上const同樣發現無法修改

 


免責聲明!

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



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