原始字符串比普通字符串更快吗?

时间:2017-05-20 21:09:58

标签: c++ string literals

我想问一下编译时时原始字符串是否比普通字符串更快。

让我用“原始”和“正常”字符串来解释我的意思...... 我们知道有一个'R'字面。

const char * raw = R"(Hello\nWorld!)";将输出

Hello\nWorld!

const char * normal = "Hello\nWorld!"将输出

Hello
World!

那么什么呢?我认为对Hi, how are you?之类的字符串使用R-Literal比使用字符串的'正常'方式更快。<​​/ p>

2 个答案:

答案 0 :(得分:2)

  

那么什么呢?我觉得使用R-Literal作为Hi这样的字符串,你好吗?比我们使用字符串的“正常”方式更快。<​​/ p>

好的,因为你要求“normal”或原始字符串文字的编译时间影响,可能是原始字符串文字可以更快地处理,因为编译器不需要处理转义字符解析和翻译。

虽然我认为差异不会很大。

原始字符串文字的主要优点是,在编写源代码时,您无需关心转义特殊字符。

答案 1 :(得分:2)

在特定编译器中解析原始字符串可能会稍微快一些,但差别几乎肯定太小而无法通知。

原始字符串的目的不是为了提高编译速度。这是让你以更易读的方式编写包含许多特殊字符(如反斜杠和引号)的字符串文字,而不必插入大量额外的反斜杠来进行转义。

使用普通的字符串文字,除非你的字符串需要大量的转义,这使得它在源代码中看起来很尴尬。仅针对这些情况使用原始字符串文字。