1. 程式人生 > >(12)標準庫型別string

(12)標準庫型別string

標準庫型別string表示可變長的字元序列,使用string型別必須首先包含string標頭檔案。作為標準庫的一部分,string定義在名稱空間std中。如:
#include<string>
using std::string;

定義和初始化string物件:
如何初始化類的物件是由類本身決定的。一個類可以定義很多種初始化物件的方式,只不過這些方式之間必須有所區別:或者是初始值的數量不同,或者是初始值的型別不同。下面是初始化string物件的幾種方式:


直接初始化和拷貝初始化的區別:
如果使用等號(=)初始化一個變數,實際上執行的是拷貝初始化,編譯器把等號右側的初始值拷貝到新建立的物件中去。與之相反,如果不使用等號,則執行的是直接初始化.

string物件上的操作(大部分):


讀取string物件:
如:

#include<iostream>
#include<string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
void main(){
string s;	//空字串
cin>>s;		//將string物件讀入s,遇到空白停止
cout<<s<<endl;	//輸出s
system("pause");
}
和內建型別的輸入輸出操作一樣,string物件的此類操作也是返回運算子左側的運算物件作為其結果,因此多個輸入或多個輸出可以連寫在一起。同時string是可變長的字元列表,所以可以輸入任意數量的字元。

使用getline讀取一整行:
有時候我們希望能夠在最終得到的字串中保留輸入時的空白符,這時應該用到getline函式代替原來的>>運算子。
getline函式的引數是一個輸入流和一個string物件,函式從給定的輸入流中讀入內容,直到遇到換行符為止(注意換行符也被讀進來了),然把所讀的內容存入到那個string物件中去(注意不存在換行符),返回過程中換行符實際上被丟棄了。
getline只要一遇到換行符就結束讀取操作並返回結果,哪怕輸入的一開始就是換行符也是如此。如果開始輸入的是換行符,那麼得到的結果是個空string。

string::size_type型別

需要說明一下,string物件的size函式返回的結果是一個string::size_type型別的值,它也是一個無符號型別的值,而且能足夠存下任何string物件的大小。允許編譯器通過auto或者decltype來推斷變數的型別。

string類及其大多數標準庫型別都定義了幾種配套的型別。這些配套型別體現了標準庫型別與機器無關的特性,型別size_type即是其中的一種。

比較string物件:

string物件的比較按照(大小寫敏感的)字典順序:

一.如果兩個string物件的長度不同,而且較短string物件的每個字元都與較長string物件對應位置上的字元相同,就說較短string物件小於較長string物件。

二.如果兩個string物件在某些對應的位置上不一致,則string物件比較的結果其實是string物件中第一對相異字元比較的結果。

對於string類而言,允許吧一個物件的值賦給另外一個物件。如:

string s1("hello"),s2;
s2=s1;
兩個string物件相加:

兩個string物件相加得到一個新的string物件,其內容是把左側的運算物件與右側的運算物件串接而成:前半部分是加號左側string物件所含的字元、後半部分是加號右側string物件所含的字元。

字面值和string物件相加:

因為標準庫允許把字元字面值和字串字面值轉換成string物件,所以在需要string物件的地方就可以使用這兩種字面值來代替。如:

string s1 = “hello”;
string s2 = s1+',';
s2+=s2+"\n";
當把string物件和字元字面值及字串字面值混在一條語句中使用時,必須確保每個加法運算子(+)的兩側的運算物件至少有一個是string物件。
string s3 = "hello"+",";     //錯誤
因為某些歷史原因,也為了與C相容,所以C++語言中的字串字面值不是標準庫型別string的物件。

相關推薦

12標準型別string

標準庫型別string表示可變長的字元序列,使用string型別必須首先包含string標頭檔案。作為標準庫的一部分,string定義在名稱空間std中。如: #include<string> using std::string; 定義和初始化string物件

C++primer筆記-第3章 字串、變數和陣列標準型別string

 標準庫string、vector都是對內建陣列型別的抽象,string支援變長的字串,vector表示可變長的集合。迭代器是string和vector的配套型別,常用於訪問string或者vector中的元素。 string作為標準庫的一部分,定義在名稱空間s

筆記2 標準型別string、vector和bitset

抽象資料型別(abstract data type) 通常,標頭檔案中應該只定義確定必要的東西 標準庫string 型別 #include<string> using  std::string; string的定義和初始化 string型別的輸入操作符:

Python學習筆記——1標準資料型別

    最近一直在用python做一些實驗,都是一邊百度一邊寫程式碼,最後程式碼是寫完了,可是回過頭一想,感覺知識很零碎。沒有構成體系,所以決定寫個系列部落格,把一些基礎知識梳理記錄下來,主要是幫助自己加深理解,構建起系統的知識體系,從資料型別開始吧。版本為python3.6

C++標準型別-string

1:首先區分開C和C++中的string 解釋:C語言中的並沒有string型別(C語言連類都沒,當然沒有string),C中的有個string.h標頭檔案,這個標頭檔案只是包含對字串的處理,比如說strcat等函式。而C++中的string是一個標準庫型別,表示可變長的字元序列,而由於是標準庫

標準型別String用法總結(1)

標頭檔案及名稱空間 #include<string> using std::string 定義及初始化string物件 string s1; //預設初始化,s1是一個空串 string s2(s1);//s2是s1的副本 string s2=s1;//等價於s2(

Js學習7標準-object物件

Js原生提供Object物件,O大寫,所有的其他物件都繼承自Object物件,都是Object的例項 Object物件的原生方法分為兩類: 本身的方法:直接定義在Object物件的方法 例項方法:定義在Object原型物件Object.prototype上的方法,可以被Object例項直接使用 凡是定

《隨筆十八》—— C++中的 “ 標準型別string

  目錄 初始化 string 物件的方式 string 物件的操作 cin 和 getline  讀寫 string物件 string 的 size ()操作 和  string::size_type 型別 比較string物件

C++面試總結標準

1.什麼是標準庫(STL)? C++ STL(標準模板庫)是一套功能強大的 C++ 模板類,提供了通用的模板類和函式,這些模板類和函式可以實現多種流行和常用的演算法和資料結構,如向量、連結串列、佇列、棧。 2.C++ 標準模板庫的核心三個元件組成? 3.string C++ 從

Python學習之路——標準資料型別續——列表,元組,字典,集合

0.Python之禪 可以通過在python直譯器中輸入import this 檢視python應該注意的一些規範與原則,如下: 1.列表 元素用方括號括起,元素之間用逗號隔開,如[1,2,3,4] 三大特點: (1)異構性 列表裡想裝啥就裝啥,即:他可以包含不同種類、

c++之標準型別string

標準庫型別string 表示可變長的字元序列,使用string型別必須首先包含string標頭檔案。 #include <string> using namesapce std; 讀取未知數量的物件 int main() {

C++11新特性11- 標準函式begin和end

遍歷陣列元素的方法假設有一個數組:inta1[]{1,2,3,4,5};遍歷陣列的所有元素,可以這樣:for(unsignedinti=0;i<sizeof(a1)/sizeof(a1[0]);++i){cout<<a1[i]<<endl;}也可

c++_標準型別string

一  標準庫型別 string 是可變長的字元序列,使用string型別需要: #include<string> using namespace std;  or   using std::string; 二 定義與初始化             直接初始化

C++中的標準型別——string

string  標準庫型別string是一種可變長的字元序列。string定義在std名稱空間中。在使用string前,需要: #include<string> using std

11 標準型別 string 初識

1. 定義和初始化 string 物件 #include <iostream> using namespace std; using std::string; /** * 標準庫型別 string */ int main() {

C++基礎程式設計----2.2標準型別string

                                   標準庫型別string 標準庫型別string是一個可變長的字元序列。 使用string型別必須包含string標頭檔案,stri

標準型別基礎1string

0、都已包含響應庫函式並已進行using宣告。 1、string初始化 string s1; //預設建構函式,s1為空字串 string s2(s1); //將s2初始化為s1的一個副本 stri

c++基礎五---標準型別string ,vector

string型別 支援長度可變的字串 因為歷史原因以及為了與C語言相容,字串字面值與標準庫string型別不是同一種類型。這一點很容易引起混亂。 s.empty ()    如果s為空串,則返回ture s.size() s[n]    返回s中位置為n的字元 size(

c++ primer第三章標準型別學習筆記

1.在使用標準庫提供的string物件的size方法獲取字串長度時,為了避免溢位,儲存一個string對像size的最安全方法就是    使用標準庫型別string::size_type,處於同樣的道理在定義索引變數時也要使用string::size_type。 2.stri

讀後感C++ Primer(第四版) 第三章 快速入門 標準型別

之所以稱為抽象型別,是因為我們在使用時不用關心它們是如何表示的,只需要知道這些抽象型別支援哪些操作就可以了。 字串與標準庫string型別不是同一型別。 cin >> s, 如果輸入 hello world,只會把hello存到s中去,因為標準輸入會讀取字串直