0
点赞
收藏
分享

微信扫一扫

c++中string类型的长度

老王420 2022-04-15 阅读 49
c++

最近遇到个这个问题

string一个空的字符串,楼主想往里面写入字符 并且输出

但是没有结果输出

这样是没有输出的

可以看出

s=s+"nihao";    s变成了  nihao

然后通过s[i] 写入数据

变成 abcdo

这里s[10]写入m

s的长度仍为5

输出也是abcdo

当时我在想 为什么cout 不输出s这个字符串的所有内容呢?  

也就是为啥不输出到s【10】为止

既然要输出所有内容  那么必须知道s的长度

而s是一个string类型

如果构造的时候传入的是空字符串

那么string的mdata就新申请一个字符字节的内存并且赋值为空

如果是某个字符串

就申请一堆内存  然后把这个字符串的值赋值到mdata里面

详解C++ 编写String 的构造函数、拷贝构造函数、析构函数和赋值函数_C 语言_脚本之家 (jb51.net)

(55条消息) 【C++】String类中的运算符重载_Irean_Lau的博客-CSDN博客

(55条消息) c++ string 函数的重载_believexfr的博客-CSDN博客

+=号背后发生了什么?

 这里是size就是length

 可以看出 当用了重载后的运算符+号之后  

length 才发生了变化

而cout应该也是根据这个长度输出的s

我们再修改一下程序

直接对s【i】操作

length会不会变化呢?

我们在末尾加入两个字符

 

可见 ,是没有变化的


总结

string是一个类  与 char* 有本质的区别

运算符是重载之后的,直接用【】来访问  跟+ 号是不一样的 

这是楼主第一次写文章,如果有错误,请多多包涵,评论区可以提出问题 ,谢谢

举报

相关推荐

0 条评论