C 標準庫string型別

2021-09-08 17:10:38 字數 3433 閱讀 7290

string型別支援長度可變的字串,c++標準庫將負責管理與儲存字元相關的記憶體,以及提供各種有用的操作。標準庫string型別的目的就是滿足對字串的一般應用。

引入標頭檔案#include

string標準庫支援幾個建構函式,建構函式是乙個特殊成員函式

一下是幾種初試化string物件的方式

string s1;   //

預設建構函式,s1為空串

string s2(s1); //

將s2初始化為s1的副本

string s3("

value

"); //

將s3初始化為乙個字串字面值副本

string s4(n,'

c'); //

將s4初始化字元'c'的n個副本

構造string物件的其他方法:

舉例如下:

#include#include

using

namespace

std;

intmain()

;

string s1(cp); //

s1=="hiya"

string s2(carray,5); //

s2=="world"

string s3(carray+5,4); //

s3=="!!!!"

string s4(nonull); //

error

string s5(carray,2); //

s5=="hi"

cout

cout

cout

cout

cout

cin.

get();

return0;

}

注:s4的定義是錯誤的,呼叫這種形式的初始化,其引數必須是以空字元結束的陣列,將不包含null的陣列傳遞給此建構函式將導致編譯器無法檢測的嚴重錯誤

使用標準輸入輸出操作符來讀寫string物件:

#include#include

using

namespace

std;

intmain()

string型別的輸入輸出操作符:

我們可以把多個讀操作或多個寫操作放在一起:

string

s1,s2;

cin>>s1>>s2;

cout

string的輸入輸出操作符也會返回所讀的資料流,可以把輸入操作作為判斷條件:

intmain()

(2)、使用getline讀取整行文字

string io操作:getline,這個函式接受兩個引數:乙個輸入流物件和乙個string物件。getline函式從輸入流的下一行讀取,並儲存讀取內容到string中,但不包括換行符。getline並不忽略換行符,遇到換行符,即便它是輸入的第乙個字元,getline也將停止讀入並返回,這時string引數將被置為空string

(1)string的size和empty操作

了解string物件是否為空是有用的:

string st("

test");

if(st.size()==0

) //

orif(st.empty())

(2)string::size_type型別

size()成員函式返回的是string::size_type型別的值,一種unsigned型,事實表明size_type儲存的string長度是int所能儲存的兩倍

可以把乙個string物件賦值給另乙個string物件:

string s1,s2="

test";

s1=s2;

先將s1占用的相關記憶體釋放,分配給s1足夠存放s2副本的記憶體空間,最後把s2中所有字元複製到新分配的記憶體空間

兩個或多個string物件可以通過使用+或者+=連線起來

string s1("

hello, ");

string s2("

word\n");

string s3=s1+s2;

//or

s1+=s2;

string s1("

hello");

string s2("

world");

string s3=s1+"

, "+s2+"

\n";

string型別通過下標操作符()來訪問string物件中的單個字元

string型別還支援大多數順序容器的操作,在某些方面,可將string型別視為字元容器。除了一些特殊操作,string型別提供與vector容器相同的操作

不同的是:它不支援以棧的方式操縱容器:在string型別中不能使用front、back和pop_back操作

string型別提供的操作意味著可將操縱vector物件的程式改為操縱string物件:

#include#include

using

namespace

std;

intmain()

與容器共有的string操作

string型別特有的版本

string型別提供了容器型別不支援的其他幾種操作:

1、substr操作

s.substr(pos,n) //返回乙個string型別的字串,它包含s中從下標pos開始的n個字元

s.substr(pos) //返回乙個string型別的字串,它包含從下標pos開始到s末尾的所有字元

s.substr()   //返回s的副本

#include#include

using

namespace

std;

intmain()

修改string物件的操作:

string標準庫型別 C

c 中string的學習體會 string 1 不允許把兩個字串字面值連線起來,乙個string物件 字串字面值返回的是string物件.string size type只是string裡方便移植性的定義的一種型別 2 cout include using namespace std int mai...

C 標準庫string型別

c 組成 基本資料型別和抽象資料型別標準庫 只需知道抽象資料型別支援的操作而不需關心內部表示 命名空間兩種使用方法 using std name 和 using namespace std 標準庫string型別和字串字面值不是同一型別 具體區別?getline 函式 string line get...

C 標準庫string型別

標準庫的string型別 include include using namespace std 或者可以這樣 using std string using std cin using std cout int main 12.下標操作可用作左值 string str some string for...