繁体   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