string型別支援長度可變的字串,c++標準庫將負責管理與儲存字元相關的記憶體,以及提供各種有用的操作。標準庫string型別的目的就是滿足對字串的一般應用。
引入標頭檔案#include
string標準庫支援幾個建構函式,建構函式是乙個特殊成員函式
一下是幾種初試化string物件的方式
string s1; //構造string物件的其他方法:預設建構函式,s1為空串
string s2(s1); //
將s2初始化為s1的副本
string s3("
value
"); //
將s3初始化為乙個字串字面值副本
string s4(n,'
c'); //
將s4初始化字元'c'的n個副本
舉例如下:
#include#include注:s4的定義是錯誤的,呼叫這種形式的初始化,其引數必須是以空字元結束的陣列,將不包含null的陣列傳遞給此建構函式將導致編譯器無法檢測的嚴重錯誤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;
}
使用標準輸入輸出操作符來讀寫string物件:
#include#includestring型別的輸入輸出操作符:using
namespace
std;
intmain()
我們可以把多個讀操作或多個寫操作放在一起:
string(2)、使用getline讀取整行文字s1,s2;
cin>>s1>>s2;
cout
string的輸入輸出操作符也會返回所讀的資料流,可以把輸入操作作為判斷條件:
intmain()
string io操作:getline,這個函式接受兩個引數:乙個輸入流物件和乙個string物件。getline函式從輸入流的下一行讀取,並儲存讀取內容到string中,但不包括換行符。getline並不忽略換行符,遇到換行符,即便它是輸入的第乙個字元,getline也將停止讀入並返回,這時string引數將被置為空string
(1)string的size和empty操作
了解string物件是否為空是有用的:
string st("(2)string::size_type型別test");
if(st.size()==0
) //
orif(st.empty())
size()成員函式返回的是string::size_type型別的值,一種unsigned型,事實表明size_type儲存的string長度是int所能儲存的兩倍
可以把乙個string物件賦值給另乙個string物件:
string s1,s2="先將s1占用的相關記憶體釋放,分配給s1足夠存放s2副本的記憶體空間,最後把s2中所有字元複製到新分配的記憶體空間test";
s1=s2;
兩個或多個string物件可以通過使用+或者+=連線起來
string s1("hello, ");
string s2("
word\n");
string s3=s1+s2;
//or
s1+=s2;
string s1("string型別通過下標操作符()來訪問string物件中的單個字元hello");
string s2("
world");
string s3=s1+"
, "+s2+"
\n";
string型別還支援大多數順序容器的操作,在某些方面,可將string型別視為字元容器。除了一些特殊操作,string型別提供與vector容器相同的操作
不同的是:它不支援以棧的方式操縱容器:在string型別中不能使用front、back和pop_back操作
string型別提供的操作意味著可將操縱vector物件的程式改為操縱string物件:
#include#include與容器共有的string操作using
namespace
std;
intmain()
string型別特有的版本
string型別提供了容器型別不支援的其他幾種操作:
1、substr操作
s.substr(pos,n) //返回乙個string型別的字串,它包含s中從下標pos開始的n個字元
s.substr(pos) //返回乙個string型別的字串,它包含從下標pos開始到s末尾的所有字元
s.substr() //返回s的副本
#include#include修改string物件的操作:using
namespace
std;
intmain()
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...