原始字符串文字是否像普通字符串文字一样以 null 结尾?

pas*_*sha 2 c++ string string-literals rawstring c++11

我知道字符串文字总是以 null 结尾,甚至""长度为 1。

原始字符串文字的情况是否相同,例如:R"()"长度是否为 1?

Apl*_*123 5

原始字符串文字只是忽略转义的普通 C 字符串,这意味着它们仍然以 null 结尾。它不像"foo"s,它是一个实际的 c++ std::string,它不一定以空终止。

  • _“不像“foo”,它是一个实际的 C++ 字符串,不是以 null 结尾的。”_ - `std::string` 是以 NUL 结尾的(如果我没记错的话,从 C++11 开始保证,当`.data()` 和 `.c_str()` 成为功能等效项)。 (3认同)
  • @MooingDuck:普通的旧 C 风格字符串文字也被描述为以“NUL”结尾,并且它们[可以在其中嵌入“NUL”](/sf/ask/2449313121/)。当然,面向 C 字符串的 API 不会看到第一个嵌入的“NUL”之后的任何内容,因此它通常相当无用,但这并不意味着文字不能包含它们。C++ 字符串知道它们的大小,因此不存在终端“NUL”来*定义*它们终止的位置,但它们总是以“NUL”终止。要点是,`std::string` 是以 `NUL` 结尾的,就像 C 字符串文字一样。 (3认同)