std::string和const char*之间的区别



std::string和const char*之间有什么区别?考虑以下示例

#include <iostream>
#include <string>
int main()
{
const char* myName1{ "Alex" }; 
std::cout << myName1 << 'n';
std::string myName2{ "Alex" }; 
std::cout << myName2 << 'n';
return 0;
}

它们是一样的吗?

std::string将使您能够使用其成员函数,最重要的是可以修改其内容。当程序到达其构造函数时,初始数据可能会被复制到动态分配的内存位置。它还将存储其大小。

const char*只是一个指针值,它指向一个将被烘焙到二进制文件中的常量。没有存储任何大小信息,对其进行操作的所有函数都必须依赖于末尾是否存在''值。


1这里可能会出现小字符串优化。

只要您想存储某个字符串,const char *就不行,您就需要char *。你必须为char *分配内存。你必须计算出要分配多少内存。然后,如果你想,比如说,附加到那个字符串,就重新分配更多。您必须记住在指针超出范围之前释放内存(例如,在某个地方抛出异常(。

好吧,std::string让你摆脱了这一切。这就是最大的区别。

就像C数组和std::vector。。。


但在您的示例范围内,实际差异非常小。

最新更新