簡體   English   中英

比較數組的更好方法?

[英]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) arrayuint8_t不是char

2)僅比較4個字節,沒有空終止,即沒有字符串比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM