c++ string 的注意事项
-
string 的reserve 和 resize 区别
- reserve 与capacity相关,如果reserve一个比当前capacity大的 reserve 只会找到一块合适大小的内存,并将原始内容拷贝到新位置,迭代器会失效,size() 不变, 如果reserve 一个比当前capacity 小,则不会发生变化。
- resize 与size相关,如果resize一个比当前size大的数,多出的size会填充为0。 如果甚至比capacity要大,则会调用reserve来申请一个大内存,再拷贝数据,再填充0。如果resize一个比当前size小的数,只是修改了size,但实际内存没变化。
-
data() 返回底层内存地址, 直到c++17 才可写,之前都是只读的
-
string 非原始字符串即不以'\0'作为结束符,所以对于strlen 这些操作都是错误的, 只能通过string的size来计算大小。
有人说c++之所以不适合网站开发,就是因为c++的string不是真正的字符串