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风格字符串! 展开
那我在str中存储了,假设:
str="hello\0\0world!";
那岂不只表示hello后字符串就结束了?
C++的string竟然也是以\0表示字符串结束?
传小奇,你好!我说的只针对C++新引入的STL string类型,而不考虑
C++兼容C语言的C风格字符串! 展开
6个回答
展开全部
如果你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
展开全部
并不是的!
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内部的空间里了
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内部的空间里了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说的这个方面是一样的。
C++是又C语言发展而来,很多东西都很相似,你主要把他们的区别记一下,其它的都按照C语言来用
C++是又C语言发展而来,很多东西都很相似,你主要把他们的区别记一下,其它的都按照C语言来用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STL的string也是已'\0'作为字符串结束标志。
str="hello\0\0world!";
str的值是"hello\0"
str="hello\0\0world!";
str的值是"hello\0"
追问
这个真的跟具体的库实现有关系。
在《effective STL》中一书中有说到。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
恩,几乎所有的字符串都是\0结束……就是这么定的……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询