C字串和C 字串

2021-06-22 16:15:32 字數 2985 閱讀 9046

在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null('\0')字元結尾的字元陣列,null字元表示字串的結束。需要注意的是:只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。

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

//字串的初始化

char a[11] = "huanying";

//字串的賦值

strcpy(a,"nihao")

//獲取字串的長度,不包括'\0'在內

strlen(a);

printf("%s",a);

在c中也可以使用字元指標來訪問乙個字串,通過字元指標指向存放字串陣列的首元素位址來進行訪問.

char *a = "nihao";

printf("%s",a); 

在c++中則把字串封裝成了一種資料型別string,可以直接宣告變數並進行賦值等字串操作。

以下是c字串和c++中string的區別:

c字串                                  string物件

所需的頭檔名稱            或或

為什麼需要標頭檔案            為了使用字串函式                  為了使用string類

如何宣告                        char name[20];                    string name;

如何初始化                     char name[20]="nihao";      string name = "nihao";

必須宣告字串長度麼?  是                                         否

使用乙個null字元麼?      是                                         否

怎樣實現字串賦值        strcpy(name,"john");           name = "john";

其他優點                       更快                                      更易於使用,優選方案

可以賦乙個比現有字元更 不能                                      可以

長的字串麼?  

c++常用字串函式

char s1="i am a student";

char s2[20]="teacher";

char s3="student";

int result;

char s4[20],*p;

(1)串長度 int strlen(char *str)

cout<

cout<

(2)串拷貝 char *strcpy(char *str1,char *str2)

strcpy(s4,s2);   //s4為"teacher"

(3)串連線 char *strcat(char *str1,char*str2)

strcat(s2,s3); //s2為"teacherstudent"

(4)串比較 int strcmp(char *str1,char *str)

//比較的是對應字元的ascii碼值,如果str1>str2,返回1

result=strcmp(s2,s3);   //result>0

result=strcmp(s2,s2);   //result=0

result=strcmp(s3,s2);   //result<0

(5)串定位 char *strchr(char *str,char ch)

p=strchr(s1,'s');    //找到返回字元在字串中的位置,否則返回-1

strcpy(p,s2);      //s1為"i am a teacher"

(6)在乙個串中查詢是否存在和另乙個串相等的子串

(7)擷取子串形成乙個新串

字串的輸入

(1)方法一:

使用輸入操符來填充乙個c字串變數

例如:char a[80];

cin>>a;

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

(2)方法二:

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

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

例如:char a[80];

cin.getline(a,80);

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

c++ string類的輸入

(1)方法一:

和c字串輸入的方法一相同。

(2)方法二:

使用getline函式。

例如:string a;

getline(cin,a);

string物件和c字串之間的轉換

可以將c字串儲存在string型別的變數中,例如:

char a = "nihao";

string b;

b=a;

但string物件不能自動的轉換為c字串,需要進行顯式的型別轉換

,需要用到string類的成員函式c_str().

例如:strcpy(a,b.c_str());

字串到數字的轉換

atoi函式獲取乙個c字串引數,返回對應的int值。如果引數不與乙個int值對應,atoi就會返回0。atoi函式在檔案為cstdlib的庫中。如果數字太大,不能轉換成int型別的值,可以使用atol將字串轉換為long型別的值。

例如:atoi("1234");   //返回整數1234

atoi("#123");   //返回0

C字串和C 字串

在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。c字串定義時可以利用 號進行初始化,但是以後不能利用 對c字串進行賦值。...

C字串和C 字串

from 在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。c字串定義時可以利用 號進行初始化,但是以後不能利用 對c字串...

C字串和C 字串小結

在c中,並沒有字串這個資料型別,而是使用字元陣列來儲存字串。c字串實際上就是乙個以null 0 字元結尾的字元陣列,null字元表示字串的結束。需要注意的是 只有以null字元結尾的字元陣列才是c字串,否則只是一般的c字元陣列。字串的初始化 char a 11 huanying 字串的賦值 strc...