程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C字符串與C++中string的差別詳解

C字符串與C++中string的差別詳解

編輯:關於C++

C字符串與C++中string的差別詳解。本站提示廣大學習愛好者:(C字符串與C++中string的差別詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C字符串與C++中string的差別詳解正文


在C++中則把字符串封裝成了一種數據類型string,可以直接聲明變量並停止賦值等字符串操作。以下是C字符串和C++中string的差別:

 C字符串
 string對象(C++)

所需的頭文件稱號
 <string>或<string.h>
 <string>或<string.h>

須要頭文件 緣由
 為了應用字符串函數
 為了應用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<<strlen(s1)<<endl; 輸入14
cout<<strlen(s2)<<endl; 輸入7

(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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved