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
。。。
但在您的示例范围内,实际差异非常小。