我有一个由const char []组成的向量,我希望能够检查每个字符数组是否等于向量中的其余字符数组。因此,如果这是我初始化的方式,然后我将随机const char []分配给矢量数组的5个部分,如何在不使用==的情况下比较它们?
const char sled[]="sled";
const char car[]="car";
const char house[]="house";
const char dog[] ="dog";
vector<const char[]> vect;
if (vect[0]== vect[1]== vect[2]. == vect[3] == vect[4])
{
cout << "They are all equal!"
return;
}
答案 0 :(得分:5)
const char *
或C字符串与strcmp()
进行比较。您也可以编写自己的for loop
,逐个比较chars
。
答案 1 :(得分:3)
您尝试使用std::vector
won't even compile的C风格字符串,但假设您找到了使其工作的方法,这就是我如何比较两个字符串,确保没有运算符{{1曾经使用过(考虑到==
可能在其实现中使用该运算符):
strcmp
而here是它执行的实例。现在,如果您希望以正确的方式实现目标,那么您将如何做到这一点:
bool eq(char a, char b) {
return !(static_cast<int>(a) - static_cast<int>(b));
}
bool are_equal(const char* a, const char* b) {
int i = 0;
for (; !eq(a[i], '\0'); ++i)
if (!eq(a[i], b[i]))
return false;
return (eq(b[i], '\0'));
}
here也是一个现实的例子。
有一个很好的编码日。