1. 程式人生 > >C++學習筆記6_字串

C++學習筆記6_字串

1. C語言的字串,char * s = "aaaa";
#include<string>
class Test
{
public :
Test(int a, char*name)
{
this->a=a;
int len = strlen(name);
this->name=new char[len+1];
strcpy(this->name,name);
}
~Test()
{
if(this->name!=NULL)
{
delete name;
name =NULL;
}
}
private:
int a;
char* name;
}
// strlen("123")只是字串的有效長度,不是實際長度,實際是"123\0",區別於sizeof("123"),sizeof只是資料型別的大小,"asdfadsf"的資料型別是char*,sizeof("123")是指sizeof(typeof(*char))


2. C++的字串
//如果是c++的字串,那麼
string name;
//這個name值就是string的物件。
那麼,建構函式,可以為
Test(int a, char*name)
{
this->name = name;//如果name沒有初值,應該是呼叫拷貝建構函式;如果有初值,應該是呼叫=操作符函式;
}

3. string物件包裹了char* 變數;
int main(void)
{
stirng s1="123";
stirng s2="456";
string s3 =s1+s2;//呼叫了+操作符函式
s1[1]='x';//過載[]操作符
cout<<s1<<endl;//過載<<操作符
}

4. string 型別重寫了>>號操作符,要呼叫cin>>str,也要include<string>
istream & operator>>(istream & ins,string &str)
{
if(str.str!=NULL)
{
delete[] str.str;
str.str=NULL;
}
char temp_str[4096]={0};
cin>>temp_str;//char*預設就有重寫>>號的。
s.str=new char[strlen(temp_str)+1];
strcpy(s.str,temp_str);
return ins;
}

5.char *strcat(char *dest, const char *src);//往字串最後空白的地方追加字串
注意,在使用strcat(str1,"aaaaa");的時候,str1一定要有初始值,不然不知道追加到哪裡了
int main(void){
char *str1 = new char[10]{0};//new char[10]{'\0'}這樣可能可以。
memset(temp.str,0,10);
strcat(str1,"aaaaa");
strcat(str2,"bbbb");
}
//如果使用strcpy就不用