【问题标题】:I wonder why std::string::c_str() returns const char * type [duplicate]我想知道为什么 std::string::c_str() 返回 const char * type [重复]
【发布时间】:2021-07-10 04:08:05
【问题描述】:

我想知道为什么 std::string::c_str() 会返回 const char * 类型,即使 sting 是 char 数组类型。

    string s("Hello");

有一个字符串s。 它由一个字符型数组和

s[1] = 'a';

我也可以像上面那样改变元素。 但是,如果我调用 c_str() 来知道字符串对象中字符串的起始地址,它会返回 const char * type。

因此,我必须使用 strcpy() 将其转换为 char 类型的数组。

为什么会返回 const 类型?

【问题讨论】:

  • 这就是封装的一般工作方式。它管理自己的内存,你不能直接修改它。只有通过它为您提供的公共成员函数。
  • 感谢您的友好回答。祝你有美好的一天。

标签: c++ string char constants


【解决方案1】:

使某些原语不可变有助于提高效率。如果编译器知道您不允许更改值,它可以优化可变值无法实现的方式。

同样,常量值可以使用新的 CPU 内存保护功能来防止缓冲区溢出尝试,这在 K&R 首次构建 C 时不存在。

这些是拥有不可变字符串原语的一些论据。

另请参阅:https://stackoverflow.com/a/28442823/1168588

【讨论】:

  • 谢谢!多亏了你,我的好奇心得到了解决。
猜你喜欢
  • 2013-11-14
  • 2021-04-02
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多