[英]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.