【问题标题】:Are string literals defined by c++ string class are of type const char[]c++ 字符串类定义的字符串文字是否属于 const char[] 类型
【发布时间】:2019-10-16 18:09:44
【问题描述】:

字符串是否定义为 string s="Hello"; 是大小为 6 的 const char[] 类型吗?

如果它是 const char[] 类型,那么我怎么能做这样的事情 s[0]='i'; ??

【问题讨论】:

  • 你要的是s的类型还是"Hello"的类型?
  • 要清楚,字符串文字和std::string 是完全不同的概念,除了std::string 被设计用于字符串文字。字符串文字不是由std::string 或其标题定义的。

标签: c++ string


【解决方案1】:

std::string s = "Hello";

右边的类型是const char[6]std::string 对象的构造函数将这五个字符(不包括终止空字符)复制到别处。这就是为什么您可以稍后修改s

【讨论】:

    【解决方案2】:

    字符串文字的类型是const char [N]

    但是当你写string s = "Hello"; 时,s 不是文字。它只是一个std::string 类型的对象。

    这里唯一的文字是"Hello",因此你不能使用"Hello"[1] = 'a';

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2021-05-30
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多