String类和字符数组

时间:2025-02-21 17:41:34

1、string对象和数组的区别

 string对象和字符数组之间的主要区别是,可以将将string对象生命为简单变量,而不是数组

string str1;   //create an empty string object
string str2="panther";   //create an initialized String
程序会自动调整string对象的长度

不能将一个数组赋值给另一个数组,但可以将一个string对象赋值给另一个string对象。
char a[20];
char b[20]="zwf";
string str1;
string str2=weifu";
a=b;                //INVALID,no array assignment
str1=str2;            //VALID,object assignment ok

2、string类字符串的合并操作
string str3;
str3=str1+str2;     //assign str3 the joined strings
str1 +=str2;    //add str2 to the end os str1 
strcat(charr1,charr2);//append contents of charr2 to charr1

3、拷贝操作和添加字符串操作
#include<iostream>
using namespace std;
#include <cstring>
int main()
{
  char a1[20];
  char a2[20]="zwf";
  string str1;
  string str2="weifu";
 str1=str2;
 strcpy(a1,a2);
 str1+="abc";
 strcat(a1,"xxxyyy");
 cout<<"a1:"<<a1<<endl;

 cout<<"str1:"<<str1;

int len1=();
 int len2=strlen(a1);
 cout<<"len1:"<<len1<<endl;
 cout<<"len2:"<<len2;

    return 0;

}

 

结果显示为:

 

    a1:zwfxxxyyy
    str1:weifuabc
对字符数组进行操作的strcpy()和strcat()都在头文件cstring中
strcpy():将字符串复制到字符数组中。(不允许将一个字符数组直接复制给另一个字符数组)

strcat():将字符串附加到字符数组末尾。

4、

未初始化的数组的内容是未定义的;函数strlen()从数组的第一个元素开始计算字节数,直到遇到空字符;所以对于未被初始化的数据,第一个空字符出现的位置是随机的,因此不同用户用strlen()得到的数组长度可能不同

5、字符串的末尾都是以'\0'结束的。