如何比较const char []的向量

时间:2013-12-04 02:04:04

标签: c++ vector compare

我有一个由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;
    }

2 个答案:

答案 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也是一个现实的例子。

有一个很好的编码日。