char str[]和string str有什么区别?

  1. char str[]是一个字符数组,也称为C风格字符串。它是一个固定大小的字符数组,用于存储一串以空字符('\0')结尾的字符序列。例如,char str[] = "Hello";声明了一个包含5个字符的字符数组。

  2. string str是C++中的字符串类,它是通过<string>头文件提供的标准库来定义的。string类提供了许多方便的成员函数和操作符,用于字符串的操作和处理。例如,string str = "Hello";声明了一个字符串对象,其中包含字符串"Hello"。

区别如下:

  • 存储方式:char str[]使用字符数组存储字符串,每个字符占用一个字节的内存空间。而string str使用动态内存分配的方式存储字符串,可以根据需要自动调整存储空间的大小。

  • 操作和功能:char str[]是一个较低级别的字符串表示形式,需要使用C风格的字符串函数进行操作,如strcpystrcmp等。而string str是一个高级的字符串类,提供了丰富的成员函数,例如length()substr()find()等,使字符串的操作更加方便和灵活。

  • 安全性:由于char str[]是一个固定大小的字符数组,如果字符串的长度超过了数组的大小,可能会导致缓冲区溢出的问题。而string str会自动调整存储空间的大小,避免了缓冲区溢出的风险。

总的来说,string类提供了更高级、更安全和更方便的字符串操作方式,而char数组则更接近底层的字符串表示形式。在C++中,推荐使用string类来处理字符串,除非有特殊的需求需要使用char数组。

一、length()函数
C++中length()函数只能用来获取字符串长度。

string str = "ADAS";
int len = str.length();

其中len = 4

二、size()函数
C++中size()函数除了跟length()函数一样可以获取字符串长度之外,还可以获取vector类型的长度。

string str = "ADAS";
vector < int> num(10,5)

int lenstr = str.size();
int lenvec = num.size();


其中lenstr = 4; lenvec = 10

三、sizeof()函数


sizeof() 用于获取对象所占内存空间大小

char c[] = "ADAS";
char* cc = c;
char cn[40] = "ADAS";
int a[] = {1,2,3,4,5,6};
int* aa = a;
cout << sizeof(c) << sizeof(cc) << sizeof(cc) << sizeof(cn);
cout << sizeof(a) << sizeof(aa) << sizeof(aa);

结果输出:

sizeof(c) = 5 //c是数组,计算到'\0'位置,结果为4 * 1+1=7
sizeof(cc) = 8 //cc为指针类型,大小为8
sizeof(*cc) = 1 //*cc指向c的第一个字符,大小为1
sizeof(cn) = 40 //开辟40个char空间,大小为40 * 1=40
sizeof(a) = 24 //a是数组,但不需计算到'\0',结果为6 * 4=24
sizeof(aa) = 8 //aa为指针类型,大小为8
sizeof(*aa) = 4 //*aa指向a的第一个数字,大小为4
 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值