[英]A better way to compare arrays?
我想知道一種比較數組值的更好方法,這與我目前正在做的事情有所不同。
對於下面的代碼,是否可以使用case語句?
uint8_t array[8];
if (array[4] == '1' && array[5] == '2' && array[6] == 'b' && array[7] == 'c')
{
//do something
}
首先,您需要使用邏輯AND運算符&&
,而不是按位AND運算符&
。
其次,您可以使用std::memcmp
代替在if
語句中使用四個邏輯表達式。
if ( std::memcmp(array + 4, "12bc", 4) == 0 )
為了多樣化,這是另一個...
#include <algorithm>
int main()
{
uint8_t array[8];
// fill array
uint8_t other[]{ "12b4" } ;
bool eq = std::equal( std::begin(array) + 4, std::end(array), std::begin(other));
}
簡而言之: if ( !memcmp( array + 4, "12bc", 4 ) )
。 不要認為strncmp
更好,因為:
1) array
的uint8_t
不是char
;
2)僅比較4個字節,沒有空終止,即沒有字符串比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.