C+中的字符串变量+; >,我知道字符串是C++中的一个类。现在,如果我声明一个类似于stringstr的实例。它是一个仅由\0字符结尾的字符数组,还是与常规字符数组有所不同?

C+中的字符串变量+; >,我知道字符串是C++中的一个类。现在,如果我声明一个类似于stringstr的实例。它是一个仅由\0字符结尾的字符数组,还是与常规字符数组有所不同?,c++,string,C++,String,在合同级别,如果需要,它是一个可以为您提供以空结尾的字符数组的类(方法c_str(),数据()) 从C++11开始,由C_str()和data()返回的数组保证与字符串的内部存储相对应。以前,这不是标准要求的,但在实践中发生过。字符数组只是堆栈上的静态内存分配,具有char数据类型。 然而,这里str是std::string类的对象,它是基本字符串类模板的一个实例,使用char(即字节)作为其字符类型 在使用std::string关键字声明字符串时,不要使用cstring或string.h函数,

在合同级别,如果需要,它是一个可以为您提供以空结尾的字符数组的类(方法
c_str()
数据()


从C++11开始,由
C_str()
data()
返回的数组保证与字符串的内部存储相对应。以前,这不是标准要求的,但在实践中发生过。

字符数组只是堆栈上的静态内存分配,具有
char
数据类型。 然而,这里str是
std::string
类的对象,它是基本字符串类模板的一个实例,使用char(即字节)作为其字符类型

在使用std::string关键字声明字符串时,不要使用cstring或string.h函数,因为std::string字符串是基本字符串类类型,而cstring字符串是const char*类型。 有关更多帮助,请参阅以下链接:
&.

这是否回答了您的问题?您可以将字符串实例视为一个小对象,其中包含以下信息:指向字符串数据的指针、字符串的长度和字符串的容量(分配的数据大小可以大于或等于长度)。实际上,由于不同的优化和关注点,它更复杂,但这是基本思想。是的,数据被nul终止,但只是为了与需要C字符串的代码的互操作性。这是否回答了您的问题?第二段不是真的,因为
data()
方法必须能够提供指向连续字符存储的指针。(它不再是常量。)