std::string的length()和size()是不是总是返回同样的值,有什么区别么?

numddd 2011-07-12 03:00:35
下面一个程序里面,我在string里面添加了一些例如'\0','\n'之类的字符,发现length()和size()还是返回一个整个的长度:

#include <vector>
#include <algorithm>
#include <iostream>
#include <string>


int main()
{
std::string s;
std::cout<<s.length()<<','<<s.size()<<std::endl;
s="abcded\n";
s+='\0';
s+="xxxxxxxxxxxxx";
std::cout<<s.length()<<','<<s.size()<<std::endl;
s='1';
std::cout<<s.length()<<','<<s.size()<<std::endl;

//为什么main函数没有return也没有编译错误?
}

输出的结果是:
0,0
21,21
1,1
Press any key to continue . . .

这是为什么呢?
...全文
18142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
downmooner 2011-07-12
  • 打赏
  • 举报
回复
size()是为了和其他容器保持一致。习惯上的
一叶之舟 2011-07-12
  • 打赏
  • 举报
回复
size_type length() const
{return (_Len); }
size_type size() const
{return (_Len); }
一叶之舟 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
一样的

C/C++ code

size_type __CLR_OR_THIS_CALL length() const
{ // return length of sequence
return (_Mysize);
}

size_type __CLR_OR_THIS_CALL size() const
……
[/Quote]
正解,string里的实现本来就是一样的,主要是为了不同使用习惯的的使用。
  • 打赏
  • 举报
回复
是一样的值

main可以不return 这个属于例外情况。
bdmh 2011-07-12
  • 打赏
  • 举报
回复
一样的

size_type __CLR_OR_THIS_CALL length() const
{ // return length of sequence
return (_Mysize);
}

size_type __CLR_OR_THIS_CALL size() const
{ // return length of sequence
return (_Mysize);
}
healer_kx 2011-07-12
  • 打赏
  • 举报
回复
是的,。

64,637

社区成员

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

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