天天看點

C++ 字元串string與字元數組char[ ]的異同

1  字元串string與字元數組char[ ]的異同

1.1  了解字元char與字元串的差別

  •  a    char類型不是C++的基本資料類型,實質上是8位的整數類型,在計算機儲存的是它的AS II碼,而不是字元本身,使用時

系統再将其轉換過來;

  • b   掌握基本的一些轉義符;
  • c    字元串是字元組成的串(非集合,可重複)。
  • d    字元用單引号标注,字元串用雙引号标注
  • e    字元是一個元素,且隻能存放單個字元,而字元串可以存放多個,并以'\0'結束('\0',空,串的結束符,一個轉義符);

1.2    字元串string與字元數組char[ ]的差別

  •    都是字元的集合,但是字元數組不需要以'\0'結束;
  •    string的使用需要頭檔案string,即#include<string> 
  •   在頭檔案string.h 中,有關于string對象的一些操作(對象的一些操作方式),比字元數組操作更為友善
  • string的size操作結果的變量是string::size_type類型(非int 類型,是int類型的能夠存儲的長度的兩倍)
  • 從字元串string對象中擷取字元的操作與char[ ]的操作一樣

代碼示例

#include<iostream>
#include<string>

using namespace std;
//using std::string;

int main() {
	char char1='a';
	cout<<char1<<" size "<<sizeof( char1)<<endl;
	
	string s1; //定義
	string s2("Hello world!");
	string s3 = "We are happy!\0"; //不會顯示\0 
	//string s4 = (4,'c');
	string s5= "We are happy!";
	cout<<"The size of s1 is "<<s1.size()<<endl;
	cout<<s2<<'\n'<<s3<<endl;
	cout<<s3<<' '<<s3.size()<<'\n'<<s5<<' '<<s5.size()<<endl;
	///char[] char_str1; //有誤 
	
	char char_str2[11]; //定義中必須要指明存儲大小 
	for ( int i = 0; i <= 10; i++ ) {
		char_str2[i]=s2[i];		
	}//通過循環給字元數組初始化 
	cout<<"The size of "<<char_str2 <<" is " << sizeof(char_str2)<<endl;
	//有誤 
	
	char char_str3[] = "hello world";
	char char_str4[] = "I am so full!\0";
	string s6(char_str3); //通過字元數組給字元串指派 
	//s6=s6(char_str3); //行不通 
	cout<<s6<<" is "<<s6.size()<<endl;
	
	//char_str4 = s3; //将字元串指派給字元數組  
	cout<<char_str4<<" is "<<sizeof(char_str4)<<endl; 
	//通過輸入流給字元串指派,遇到空格結束 
	cin>>s1;
	cout<<s1<<endl;
	return 0;
	 
}
           

運作結果:       

C++ 字元串string與字元數組char[ ]的異同

2  字元指針可以多次指派

char * char_str1[ ];
char_str=" we are so happy and so disappionted!";
cout<<char_str<<endl;
char_str=char_str2;
cout<<char_str<<endl;