string 类型的字符串结束符是什么

microxdd 2008-07-31 11:03:08
string a="abc";
cout<<a.size()<<endl;//cout 3

cout<<sizeof(a)<<endl;//cout 16
为什么不是0结束的?

...全文
2505 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
低头路过 2011-09-08
  • 打赏
  • 举报
回复
\0!
yaojackie 2011-09-08
  • 打赏
  • 举报
回复
学习的多了 越容易糊涂~~~~
赵4老师 2011-09-08
  • 打赏
  • 举报
回复
VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
afjafjafj2008 2011-09-07
  • 打赏
  • 举报
回复
看看string类的普通构造函数就知道,string是有结束符'\0'的。

String::String(const char *str)
{
if(str==NULL)
{
m_data = new char[1];

*m_data = '\0';

}
else
{
int length = strlen(str);
m_data = new char[length+1];
strcpy(m_data, str);
}
}
lucky-lucky 2011-09-07
  • 打赏
  • 举报
回复
哨兵string.end()
luciferisnotsatan 2010-12-04
  • 打赏
  • 举报
回复
string 是个容器,sizeof(string)是这个容器类型自身的大小。

lz的结贴率实在是......90多贴没结
無_1024 2010-12-04
  • 打赏
  • 举报
回复
学习 不过感觉越来越迷糊了
flower_fancy 2010-12-04
  • 打赏
  • 举报
回复
string是一种容器类。。。和字符串不同。。。
HanSong304 2010-12-04
  • 打赏
  • 举报
回复
string是一个类,里面重载了大量的运算符,提供了大量的成员函数,使得字符串的操作更加方便!
liu163169 2010-11-24
  • 打赏
  • 举报
回复
无语了,加强学习
herman~~ 2010-11-24
  • 打赏
  • 举报
回复
string 不是char*
lyglary 2010-11-24
  • 打赏
  • 举报
回复
帖子十分给力
Gob00st 2008-08-07
  • 打赏
  • 举报
回复
string其内部可能还是0结束这个字符串的,但是对于整个string来说就不是了。
也就是说其除了存储字符串,string还有其余的成员变量。
qihui_zhu 2008-08-07
  • 打赏
  • 举报
回复
string类型的数据,到底有没有结束符?
elegant87 2008-08-07
  • 打赏
  • 举报
回复
学习一下!
shenjigong19801109 2008-08-04
  • 打赏
  • 举报
回复
在string类内部还有'\0'的,只是没有给你计算而已???
shenjigong19801109 2008-08-04
  • 打赏
  • 举报
回复
在string类中,size() and length()都是求ANSI标标准在内存中的长度。中文占两个字节
ykx_yeer 2008-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangdeqie 的回复:]
a.size() 字符串个数
sizeof(a) string对象的大小,这和string类成员变量有关,还和编译器有关
[/Quote]

sizeof(a) string对象的大小
是把该对象中所有字节数累计
enthusilish 2008-08-04
  • 打赏
  • 举报
回复
为什么在dev-c++里面运行第二个结果是4
在vs里面是16
hongyzniu 2008-08-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 microxdd 的帖子:]
string a="abc";
cout < <a.size() < <endl;//cout 3

cout < <sizeof(a) < <endl;//cout 16
为什么不是0结束的?
[/Quote]

第一个函数size()求的是字符串的长度
第二个函数sizeof()求的是该类所含有的数据在内存中占的空间大小....
由于string类后面都会默认含有'\0'字符,所以应该是4*4=16的内存大小....
加载更多回复(12)
课程目标:学习Java语言中字符串相关的知识、字符编码常识和正则表达式的使用,并完成案例前导课程:《Java工程师必学系列课程》前4部课程内容:本课程是《Java工程师必学系列课程》的第5部分,主要讲解Java语言中字符串相关知识、字符编码常识和正则表达式的使用。本课程涉及的主要内容可以分为四部分:一、StringStringBuffer和StringBuilder类基本常识、基本原理和使用技巧二、字符编码常识三、Java语言正则表达式的详细语法和使用技巧四、实战案例课程说明:在开发Java程序的过程中,最常用的类莫过于字符串相关的类。可以毫不夸张的说,任何一个Java程序,都离不开对字符串保存和处理。很多学员对字符串的理解只是处于比较粗浅的阶段。殊不知,如果对字符串处理的不好,会影响到软件的运行效率。本课程专门讲解字符串相关的知识,将从字符串的存储方式、底层的运行方式等各方面深入讲解其中的原理和技巧。此外,对字符串进行更高级的处理,又要用到正则表达式的相关知识。正则表达式广泛应用于各种与字符串处理相关的场合。它是一套独立的语言系统,经过几十年的完善和发展,现在已经非常的强大,并且形成了国际标准。各种高级编程语言,都实现了自己的表达式引擎。本课程详细的讲解了Java语言中正则表达式的语法和使用技巧。掌握了正则表达式,对编程水平的提高有非常大的帮助!同时,本课程在最后一部分,安排了非常精彩的、完整的实战案例,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握字符串处理及正则表达式相关的系统知识,并能提高实际的编码水平。环境配置要求:学习本课程需安装JDK1.8或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。    因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

64,648

社区成员

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

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