標準庫 string 型別

2021-07-09 13:25:49 字數 2638 閱讀 4429

從標準輸入讀取 string 並將讀入的串儲存在 s 中。string 型別的輸入操作符:

• 讀取並忽略開頭所有的空白字元(如空格,換行符,製表符)。

• 讀取字元直至再次遇到空白字元,讀取終止。

輸入」hello world!」,則螢幕上將輸出」hello」,而不含任何空格。

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

getline 函式將 istream 引數作為返回值,和輸入操作符一樣也把它用作

判斷條件。

string 類型別和許多其他庫型別都定義了一些配套型別(companion type)。通過這些配套型別,庫型別的使用就能與機器無關(machine-independent)。size_type 就是這些配套型別中的一種。它定義為與 unsigned 型(unsigned int 或 unsigned long)具有相同的含義,而且可以保證足夠大能夠儲存任意 string 物件的長度。為了避免溢位,儲存乙個 stirng 物件 size 的最安全的方法就是使用標準庫型別 string::size_type。

兩個相鄰的僅由空格、製表符或換行符分開的字串字面值(或寬字串字面值),可連線成乙個新字串字面值。這使得多行書寫長字串字面值變得簡單:

// concatenated long string literal

std::cout

<< "a multi-line "

"string literal "

"using concatenation"

<< std::endl;

當進行 string 物件和字串字面值混合連線操作時,+ 操作符的左右運算元必須至少有乙個是 string 型別的:

string s1 = "hello"; // no punctuation

string s2 = "world";

string s3 = s1 + ", "; // ok: adding a string

and a literal

string s4 = "hello" + ", "; // error: no string operand

string s5 = s1 + ", " + "world"; // ok: each + has string operand

string s6 = "hello" + ", " + s2; // error: can't add string literals

和變數一樣,string 物件的下標操作返回值也是左值。因此,下標操作可以放於賦值操作符的左邊或右邊。通過下面迴圈把 str 物件的每乙個字元置為 『*』:

for (string::size_type ix = 0; ix != str.size(); ++ix)

str[ix] = '*';

std::string str("abcdefg");

const

char *s = str.c_str();

std::cout

<< s << std::endl;//輸出abcdefg

str[1] = '1';

std::cout

<< s << std::endl;//輸出a1cdefg

c_str 返回的陣列並不保證一定是有效的,接下來對 st2 的操作有可能會改變 st2 的值,使剛才返回的陣列失效。如果程式需要持續訪問該資料,則應該複製 c_str 函式返回的陣列。

c++ 標準庫除了定義了一些選定於 c++ 的設施外,還包括 c 標準庫。c++ 中的標頭檔案 cctype 其實就是利用了 c 標準庫函式,這些庫函式就定義在 c 標準庫的 ctype.h 標頭檔案中。

c 標準庫標頭檔案命名形式為 name 而 c++ 版本則命名為 cname ,少了字尾,.h 而在頭檔名前加了 c 表示這個標頭檔案源自 c 標準庫。因此,cctype 與 ctype.h 檔案的內容是一樣的,只是採用了更適合 c++程式的形式。特別地,cname 標頭檔案中定義的名字都定義在命名空間 std 內,而 .h 版本中的名字卻不是這樣。

通常,c++ 程式中應採用 cname 這種標頭檔案的版本,而不採用 name.h 版本,這樣,標準庫中的名字在命名空間 std 中保持一致。使用 .h 版本會給程式設計師帶來負擔,因為他們必須記得哪些標準庫名字是從 c 繼承來的,而哪些是 c++ 所特有的。

標準庫String型別

1 string物件的讀寫 用iostream標準庫可以用於讀寫內建型別如int double等的值,同樣也可以用iostream和string標準庫,使用輸入輸出操作符來讀寫string物件 注 從標準輸入讀取string,並將讀入的串儲存在s中。string型別的輸入操作符 另外還有乙個有用的s...

標準庫型別string

include using namespace std string定義在命名空間std中文件 string標準庫 string是乙個內部定義的類,初始化類物件的方式是通過類內部定義的構造方法決定的。下面列出幾個string常用的初始化方式 string s1 預設的初始化方式,s1是乙個空串 st...

標準庫string型別

一.首先作為一種標準庫型別,string存在四種基本的建構函式。如下 string s 預設建構函式,s為空串 string s s1 用s1來初始化s string s my blog 將s初始化為乙個字串字面值 string s n,c 將s初始化為n個 c 的副本 二.對於輸入主要就是cin ...