怎么区别string的capacity和size

andyzt406 2013-01-11 09:26:52
#include <iostream>
#include <string>

using namespace std;

int main()
{
string st1("This is a test!");

cout<<st1.capacity()<<endl;
cout<<st1.size()<<endl;

return 0;
}

上面这个程序在VC6.0下得到结果是31和15,但是在linux下得到结果却是15和15,这个是什么原因产生的,是编译器的原因么,还是别的什么原因。这两个函数的区别在哪,请各位大侠帮忙
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2013-01-11
  • 打赏
  • 举报
回复
capacity是当前string拥有的内存的大小 为了保证string能快速添加元素 一般都预分配一定内存 capacity返回预分配的内存大小 又由于c++标准库没有规定string的实现 所以不同的编译器采用不同的标准库 大小会不一样 size返回字符串中现在拥有的字符数 到'\0'为止 不包含'\0'
Fire_Lord 2013-01-11
  • 打赏
  • 举报
回复
capacity是当前如果不进行内存重新非配的情况下字符串的容量,size返回当前实际字符的个数
赵4老师 2013-01-11
  • 打赏
  • 举报
回复
我听说string不以'\0'结尾。

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧