C String類詳細整理

2022-04-07 18:02:20 字數 3599 閱讀 1564

string簡介

string語法基礎

輸出測試**1

string的比較操作

string類的常用建構函式:

string類的常用函式

1、引入標頭檔案

string要使用先引入標頭檔案

#include

注意這裡的是string,學了c的同學請注意,不是string.h

底層:是一種順序表的結構,元素是char型別的字元

2、命名空間

string是模板類,位於命名空間std中,通常為了使用方便還要加上這樣一句

using

namespace std;

c++在c的基礎上增加了,和模板(stl),string就是c++的乙個類模板。但是c沒有string,它有字元陣列。

注意:c的字串是指標(陣列的本質是指標),而c++的字串是類模板

string可以儲存一串字元,所以叫做字串,乙個string變數c++好像並沒有規定最大限度,反正可以儲存非常大的量,我們可以用s.max_size()的方法檢視最大限度,就是可以儲存多少個字元,因為乙個字元是乙個位元組。(max_size()的數值是4611686018427387897)

string儲存參考:

string也可以變成乙個陣列,這樣可以儲存多行的資料

定義定義乙個string變數很簡單

string s;
即可

輸入也很簡單,直接用cin就足以了

string s;

cin >> s;

即可

整行輸入

用getline輸入法

string s;

getline

(cin, s)

;

即可輸入帶有空格的字串

輸出

cout << s << endl;
就足夠,可以用printf和scanf代替

測試**1

#include

#include

using

namespace std;

int main (

)

程式的執行結果如下:

hello world

world

worabcde

abcaaaaa

hello

string的比較操作

你可以用 ==、>、<、>=、<=、和!=比較字串,可以用+或者+=操作符連線兩個字串,並且可以用獲取特定的字元。

#include

#include

using

namespace std;

intmain()

結果:

please input your name:

zhang↙

you are not wang!

zhang, welcome!

zhang, welcome!

上例中,cout<< str[i];可換為:cout<< str.at(i);

下面的string變數統一叫做str

assign函式

str.assign(「abc」) ——把str清空,重新賦值」abc」

str.assign(「abc」, 2) ——把str清空,重新賦值」abc」,然後保留2位,str=「ab」

str.length() ——返回字串長度、

str.size() ——和length一樣

str**.reasize**(10) ——設定當前 str 的大小為10,若大小大與當前串的長度,\0 來填充

str**.reasize**(10,char c) ——設定當前 str 的大小為10,若大小大與當前串的長度,字0符c 來填充

str.reserve(10) ——設定str的容量 10,不會填充資料

str.swap(str1) ——交換 str1 和 str 的字串

str.push_back(『a』) ——在str末尾新增乙個字元 『a』 ,引數必須是字元形式

insert函式方法:

str.insert(2,3,『a』)——在str下標為2的位置新增 3個 字元』a』

str.insert(2,「abc」)——在str下標為2的位置新增 字串 「abc」

str.insert(2,「abc」,1)——在str下標為2的位置新增 字串 「abc」 中 1個 字元

str.insert(2,「abc」,1,1)——在str下標為2的位置新增 字串 「abc」 中從位置 1 開始的 1 個字元

注:上個函式引數中加粗的1,可以是string::npos,這時候最大值,從 位置1 開始後面的全部字元

str.erase(2)——刪除 下標2 的位置開始,之後的全刪除

str.erase(2,1)——刪除 下標2 的位置開始,之後的 1個 刪除

str.clear()——刪除 str 所有

str.replace(2,4,「abcd」)——從 下標2 的位置,替換 4個位元組 ,為"abcd"

str.empty()——判空

反轉相關

引入標頭檔案#include

reverse

(str.

begin()

, str.

end())

;

格式如上,可以原封不動的用這個語句,意思是將str的開始到結尾反轉,當然begin和end也可以改成具體的值

拷貝相關

str1=str.substr(2)——提取子串,提取出 str 的 下標為2 到末尾,給 str1

str1=str.substr(2,3)——提取子串,提取出 str 的 下標為2 開始,提取三個位元組,給 str1

const char* s1=str.data()——將string類轉為字串陣列,返回給s1

char* s=new char[10]

str.copy(s,count,pos)——將 str 裡的 pos 位置開始,拷貝 count個 字元,存到 s 裡

參考:1、

st char* s1=str.data()——將string類轉為字串陣列,返回給s1

char* s=new char[10]
str.copy(s,count,pos)——將 str 裡的 pos 位置開始,拷貝 count個 字元,存到 s 裡

參考:1、

2、

CString類詳細介紹

這是本人第一次寫csdn部落格,如果有寫得不好的地方請各位大佬幫忙指出不足之處,本人定會謙虛請教。眾所周知,mfc 微軟基礎類庫 是基於windows介面開發的,它封裝了大部分的windows api 應用程式介面 函式,由c格式的函式公升級為類庫。而cstring字串類是mfc中比較常用的乙個類,...

c string類詳細說明

from 之所以拋棄char 的字串而選用c 標準程式庫中的string類,是因為他和前者比較起來,不必擔心記憶體是否足夠 字串長度等等,而且作為乙個泛型類出現,他整合的操作函式足以完成我們大多數情況下 甚至是100 的需要。我們可以用 進行賦值操作,進行比較,做串聯 是不是很簡單?我們盡可以把它看...

C String類的實現

參考c primer.string類的實現,清翔兔 06,jan.include using namespace std class string string void private char m data inline string string const char str if str m...