【问题标题】:How does std::string's c_str() function return null-terminating string? [duplicate]std::string 的 c_str() 函数如何返回空终止字符串? [复制]
【发布时间】:2018-11-22 19:42:58
【问题描述】:

我无法理解从 string.c_str() 返回的 char * 是否指向同一个缓冲区(并且不进行任何复制)它是如何以 null 终止的?该函数是否在字符串末尾添加空终止符?如果缓冲区没有任何额外的字节来存储它会发生什么?

谢谢。

【问题讨论】:

  • C++ 字符串始终以空值结尾,参见。 eel.is/c++draft/string.classes#basic.string-4
  • 缓冲区一个额外的字节来保存终止符,总是。理论上它只能在您要求查看时存储终止符值,但实际上它始终存在。
  • 如果空终止符始终存在,这意味着 string.data() 与 string.c_str() 完全相同?

标签: c++ string stdstring null-terminated c-str


【解决方案1】:

自 C++11 起,字符串在内部以空值结尾,both c_str() and data() return the same thing

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2017-03-26
  • 2011-06-09
  • 1970-01-01
  • 2011-05-26
相关资源
最近更新 更多