gpt4 book ai didi

c++ - std::string 与 char*

转载 作者:IT老高 更新时间:2023-10-28 21:44:14 25 4
gpt4 key购买 nike

std::string 在堆栈或堆上的存储数据是否与 char* 不同,或者它只是从 char* 派生到一个类中?

最佳答案

char*

  • 是您的 CPU 架构的一个指针的大小。
  • 可能是从 malloc 返回的值或 callocnewnew[] .
    • 如果是,必须传递给 freedeletedelete[]完成后。
    • 如果是,则字符存储在堆中。
  • 可能由 char[ N ] 的“分解”导致(常量 N)数组或字符串字面量。
    • 一般来说,无法判断 char*参数指向堆栈、堆或全局空间。
  • 不是类类型。它参与表达式,但没有成员函数。
  • 尽管如此,实现了 RandomAccessIterator 接口(interface)以用于 <algorithm>等等。

std::string

  • 是几个指针的大小,通常是三个。
  • 在创建时自行构造:不需要 newdelete .
    • 如果字符串可以更改,则拥有字符串的拷贝。
    • 可以从 char* 复制此字符串.
    • 默认情况下,内部使用 new[]就像您获得 char* 一样.
  • 提供隐式转换,使 char* 的构造变得透明或文字。
  • 是一个类类型。为表达式定义other 运算符,例如连接。
    • 定义 c_str()返回 char*临时使用。
  • 实现 std::string::iterator输入 begin()end() .
    • string::iterator是灵活的:一个实现可以使它成为一个经过范围检查的 super 安全调试助手,或者只是一个 super 高效的char*只需轻轻一按。

关于c++ - std::string 与 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2672346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com