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

2025-03-02 14:43:18
推荐回答(5个)
回答1:

如果你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

回答2:

并不是的!
c++的string的输出不以\0结束,不懂的,没有亲自确的不要误导别人!

举个例子:
string a="hello*world";
a[5]=0;
cout<会发现输出了完整的hello world
但是为什么string str="hello\0\0world!";再输出的时候会只输出"hello"呢?是因为str内部只存到hello这部分内容,至于为什么,因为你给string赋值的是一个c风格字符串const char*,string构造函数会读取这个字符串来构造string,而c风格字符串以\0结尾,所以构造函数认为已经读取完了,就停止继续把后面的字符放进string内部的空间里了

回答3:

你说的这个方面是一样的。
C++是又C语言发展而来,很多东西都很相似,你主要把他们的区别记一下,其它的都按照C语言来用

回答4:

STL的string也是已'\0'作为字符串结束标志。

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

str的值是"hello\0"

回答5:

恩,几乎所有的字符串都是\0结束……就是这么定的……