2017-05-20 57 views
-5

我想問一下原始字符串是否比正常字符串更快,編譯時間爲原始字符串比正常字符串更快嗎?

讓我解釋我的意思是「原始」和「正常」字符串... 我們知道有'R'字面值。

const char * raw = R"(Hello\nWorld!)";將輸出

Hello\nWorld! 

const char * normal = "Hello\nWorld!"將輸出

Hello 
World! 

所以,實際上什麼快?我認爲對Hi, how are you?等字符串使用R-Literal比使用字符串的「正常」方式更快。

+0

它們都在編譯時解析。那麼你在問編譯時間或運行時影響嗎? –

+0

我忘了提及,我在問編譯時間。我確定R-literal在編譯時比另一個更快,不是嗎? – Lazcano

+0

我不這麼認爲。 –

回答

2

那麼最新實際上更快?我認爲使用R-Literal來處理喜歡的字符串,你好嗎?比我們使用字符串的'正常'方式更快。

OK,因爲你問的編譯時間的影響「正常」或原始字符串字面量,它可能是原始字符串字面量可以處理更快,因爲編譯器不會需要處理轉義字符解析和翻譯。

雖然我認爲這種差異並不會很大。

原始字符串文字的主要優點是,您在編寫源代碼時無需關心轉義特殊字符。

+0

感謝您回答我的問題!順便說一句,「原始字符串文字的主要優點是,在編寫源代碼時,您不需要關心轉義特殊字符。」,R-literal會修復一些MySQL字符問題嗎? – Lazcano

+0

@Lazcano _「如果R-literal會修正一些MySQL字符問題?」_也許。取決於具體的用例。 –

+1

@Lazcano>安全回答:沒有。從上下文來看,我99%肯定你會混淆非常不同的逃避案件及其含義。 – spectras

2

在特定的編譯器中解析原始字符串可能稍微更快或更慢,但差異幾乎肯定會太小而無法察覺。

原始字符串的目的不是提高編譯速度。它可以讓你以更易讀的方式編寫包含大量特殊字符(如反斜槓和引號)的字符串文本,而無需插入大量用於轉義的額外反斜槓。

使用普通字符串文字,除非您的字符串需要大量轉義,這使得它在源代碼中看起來很尷尬。僅爲這些情況使用原始字符串文字。

相關問題