深入理解c和c 中string型別(一)

2021-08-19 19:26:46 字數 1207 閱讀 8742

本次測試使用的字符集是多位元組字符集,對寬位元組字符集情況可能會有所差異。

在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。

c字串實際上就是乙個以null('\0')字元結尾的字元陣列,null字元表示字串的結束。

需要注意的是:只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。

在c中,引用string.h標頭檔案的目的是為了能夠使用c中提供的一些對字串進行操作的函式,比如strlen()。

c字串定義時可以利用"="號進行初始化,但是以後不能利用"="對c字串進行賦值。對c字串的操作需要通過"string"檔案中定義的字串處理函式。例如:

#include "stdio.h"

#include //#include //#include //使用string和cstring時會報錯,具體原因不明,可能是和當前是進行c編譯,無法使用c++庫函式的原因,

//所以在c語言中,若想使用字串的操作,需要的標頭檔案應該是string.h

void main()

通過上述例子可以看到,在c語言中,對字串進行操作時,分為兩種情況,一種是對指標型字串,指向靜態儲存區的內容,一種是字元陣列,在棧中儲存。

對指向靜態儲存區的字串指標進行操作時,可以使用初始化的方式進行重新賦值,但是不能單個賦值。

對指向棧中的字串進行操作時,不能使用初始化時的方式進行賦值,但是可以使用strcpy,memcpy,或者單個字元賦值。

c 字串的輸入

(1)方法一:使用輸入操符來填充乙個c字串變數

例如:char a[80];

cin>>a;

注:以這種方式來讀取c字串時,會忽略最初的空白字元(空格、製表符和換行符),而且輸入會在下乙個空格或者換行符處停止。

(2)方法二:使用預定義函式getline獲取整行輸入(包括空格)

getline函式有兩個引數:第乙個引數用於接收輸入的c字串變數;第二個引數用於規定getline最多能接收的字元個數。

例如:char a[80];

cin.getline(a,80);

當遇到行結束的時候,輸入才會停止

c的string.h標頭檔案中提供的常見字串操作主要如下:

拷貝:strcpy

拼接:strcat

長度:strlen

比較:strcmp

查詢:strchr

深入理解String類

string類代表的就是字串,string類物件建立之後不可變。string str hello 方式1 string str2 newstring hello 方式2 char array 方式3 string str3 newstring array string str1 hello stri...

C 類函式深入理解

先看一段 class a void print const int main int argc,const char argv 執行結果 a print 0x100000eb0 print enter.this 0x0 a v 1 空指標 那麼問題來了。一般情況下,a null,為空指標,訪問a都是...

C 中深入理解dynamic cast

一 指標型別的dynamic cast 如果一條dynamic cast語句的轉換目標是指標型別並且轉換失敗了,會返回乙個空指標,則判斷條件為0,即為false 如果轉換成功,指標為非空,則判斷條件為非零,即true。這樣做可以確保型別轉換和條件檢查在同一條表示式中完成 if derived pd ...