我目前使用string.h
庫中的strcat()
函數連接c中的字符串。C:連接字符串的最佳和最快方式是什麼
我想到了這一點,我得出了一個結論,即它應該是非常昂貴的函數,因爲在開始連接之前,它必須遍歷char數組,直到找到char '\0'
。
例如,如果我將字符串使用strcat()
"horses"
1000次,我得付 (1 + 2 + 3 + ... + 1000) * strlen("horses") = (1000*1001)/2 * 6 = 3003000
我想到了非標準的方式,保持與字符串長度的整數,然後指針發送給strcat()
到字符串的結尾:
strcat(dest + dest_len, "string");
在這種情況下,我只付1000 * strlen("horses") = 1000 * 6 = 6000
。
6000
遠低於3003000
,所以如果您進行大量這樣的連接,它對性能可能非常關鍵。
有沒有更多的標準方式來做到這一點,看起來比我的解決方案更好?
如果你有太多的字符串連接,你可以使用'snprintf(buf,len,「%s%s%s」 ,str1,str2,str3)' –
這聽起來像是我過早的優化。你知道迭代字符串中的字符有多快嗎? –
如果你正在保持字符串的長度,那麼你也在做同樣的事情......不同之處在於你在你的代碼中執行它,而不是'strcat()'爲你做! – Nullpointer