【问题标题】:Difference between std::string and const char*?std::string 和 const char* 之间的区别?
【发布时间】:2021-12-28 12:00:56
【问题描述】:

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;
}

它们是一样的吗?

【问题讨论】:

标签: c++ c++11


【解决方案1】:

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

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


1 小字符串优化可能会在这里发挥作用。

【讨论】:

    【解决方案2】:

    只要你想存储一些字符串,const char * 不行,你需要char *。你必须为char * 分配内存来指向。而且您必须弄清楚要分配的多少内存。如果您想附加到该字符串,然后重新分配更多。而且您必须记住在指针超出范围之前释放该内存(例如,在某处抛出异常)。

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

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


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

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 2013-04-23
      • 2011-02-25
      • 2013-03-22
      • 1970-01-01
      • 2011-03-07
      • 2016-06-25
      • 2014-09-17
      相关资源
      最近更新 更多