c++中string是否以\0表示字符串结束?

也就是说在stringstr中遇到'\0'就表示字符串结束了,跟C语言相同呢?那我在str中存储了,假设:str="hello\0\0world!";那岂不只表示hell... 也就是说在string str中遇到'\0'就表示字符串结束了,跟C语言相同呢?
那我在str中存储了,假设:
str="hello\0\0world!";
那岂不只表示hello后字符串就结束了?
C++的string竟然也是以\0表示字符串结束?
传小奇,你好!我说的只针对C++新引入的STL string类型,而不考虑
C++兼容C语言的C风格字符串!
展开
 我来答
wenqvip
推荐于2017-09-16 · TA获得超过722个赞
知道答主
回答量:90
采纳率:100%
帮助的人:75.9万
展开全部

如果你cout << str;这样输出的结果确实为hello,后面的内容输出不来,但是仍然存在的。你仍然可以通过str[6]这种方法得到。补充:如果str是string则不是这样,后面的东西就没了,如果str是char*才会是这样。

你说的STL中的string这种类型,它是做了封装的,它相当于C++中的一个类,就像你自己也可以写个类比如这样:

class mystring

{ private: char* data;

  public: void print(){cout << data;};

  //其它成员变量和函数

};

但是在这个类里面的data和C语言里的指针仍然一样的,比如你调用print函数时,它用cout输出data,此时也要求data指向的字符串必须以\0结尾,不然C++怎么知道输出多少个char

朱文昊1
2022-04-06 · TA获得超过3779个赞
知道小有建树答主
回答量:191
采纳率:75%
帮助的人:65.5万
展开全部
并不是的!
c++的string的输出不以\0结束,不懂的,没有亲自确的不要误导别人!

举个例子:
string a="hello*world";
a[5]=0;
cout<<a<<endl;
会发现输出了完整的hello world
但是为什么string str="hello\0\0world!";再输出的时候会只输出"hello"呢?是因为str内部只存到hello这部分内容,至于为什么,因为你给string赋值的是一个c风格字符串const char*,string构造函数会读取这个字符串来构造string,而c风格字符串以\0结尾,所以构造函数认为已经读取完了,就停止继续把后面的字符放进string内部的空间里了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传小奇
2010-09-14 · TA获得超过244个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:81.9万
展开全部
你说的这个方面是一样的。
C++是又C语言发展而来,很多东西都很相似,你主要把他们的区别记一下,其它的都按照C语言来用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jalsy
2010-09-14 · TA获得超过239个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:266万
展开全部
STL的string也是已'\0'作为字符串结束标志。

str="hello\0\0world!";

str的值是"hello\0"
追问
这个真的跟具体的库实现有关系。
在《effective STL》中一书中有说到。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丨呜呼哀哉
2010-09-14 · TA获得超过285个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:173万
展开全部
恩,几乎所有的字符串都是\0结束……就是这么定的……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式