std::string和char*在堆栈上存储数据的方式是否不同,或者std::string只是从char*派生而来的类?
char*
malloc
或calloc
或new
或new[]
返回的值。
free
或delete
或delete[]
。char[ N ]
(常量N)数组或字符串文字的“分解”结果。
char*
参数指向堆栈、堆还是全局空间。<algorithm>
等使用。std::string
new
或delete
。
char*
复制此字符串。new[]
获取char*
。char*
或字面量构造变得透明。c_str()
,它返回一个char*
以供临时使用。std::string::iterator
类型,具有begin()
和end()
函数。string::iterator
是灵活的:实现可以通过开关将其变为范围检查的高安全性调试辅助工具,也可以将其简单地变成超高效的 char*
。char*
(或char const*
)指向C风格的字符串,该字符串并不一定由存储char*
指针的人拥有。在C中,由于缺乏字符串类型,通常将char*
用作“字符串类型”。std::string
拥有其指向的字符串数据。因此,如果您需要在类中存储字符串,则很可能要使用std::string
或您的库的字符串类,而不是char*
。std::string
存储的连续性,其他人已经回答了。
char*
)不是类类型,不能派生自类。 :-) - C. K. Young