將內存緩衝區與常量字符串進行比較的正確C++方法是什麼 - strcmp(buf, "sometext")
?我想避免不必要的內存複製,因爲創建臨時std :: string對象。用C++中的const char *比較緩衝區
謝謝。
將內存緩衝區與常量字符串進行比較的正確C++方法是什麼 - strcmp(buf, "sometext")
?我想避免不必要的內存複製,因爲創建臨時std :: string對象。用C++中的const char *比較緩衝區
謝謝。
如果你只是檢查平等,你可以使用std::equal
#include <algorithms>
const char* text = "sometext";
const int len = 8; // length of text
if (std::equal(text, text+len, buf)) ...
當然
這將需要額外的邏輯,如果你的緩衝區可以比文字更小
我會使用memcmp,並且作爲最後一個參數,請使用2種數據大小中的最小值。
另外檢查以確保這兩個大小是相同的,否則你只是比較最短的前綴。
他的數據還沒有在字符串中 - 他試圖避免把它放在一個。 – 2009-05-18 13:49:53
你可以不喜歡它,
const char* const CONST_STRING = "sometext";
strcmp(buf,CONST_STRING);
STRCMP是好的,如果你知道你的緩衝區的內容。 std::strncmp
可能會爲您提供更多針對緩衝區溢出的安全性。
請張貼一些代碼使用std :: string來說明你在問什麼。 – 2009-05-18 13:35:47