如何使用void函数比较字符(或字符串),还比较从结构数组中获取的字符

时间:2013-10-09 16:55:54

标签: c++ arrays data-structures struct void

我需要比较以下结构中包含的不同类型的数据:

struct Person{
    string surname;
    char BType;
    string organ;
    int age;
    int year, ID;
} Patient[50], Donor[50];

使用以下文件初始化这些结构:

Patients 3
Androf B kidney 24 2012
Blaren O kidney 35 2010
Cosmer A heart 35 2007

......这些字段分别是姓氏,BType,器官,年龄,年份。

如果我想将BType的{​​{1}}与Patient[1] BType进行比较,我将如何进行此操作?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你有一个包含几个不同类型成员的结构,你正在寻找一种方法来比较这个结构的实例。

它可能看起来如下:

struct X {
    std::string s;
    char c;
    int i;
    bool operator==(const X& ref) {
        return s == ref.s && c == ref.c && i == ref.i;
    }
    bool operator!=(const X& ref) {
        return !this->operator==(ref);
    }
};

可能的用法:

X x1, x2;
x1.s = x2.s = "string";
x1.c = x2.c = 'c';
x1.i = x2.i = 1;
if (x1 == x2)
    std::cout << "yes";
x1.s = "string2";
if (x1 != x2)
    std::cout << " no";

输出yes no因为起初所有成员都相等但后来的字符串不同。


但是,如果您只需要比较特定成员,请直接访问和比较它们(不需要重载operator==):

if (Patient[1].BType == Donor[1].BType) {
    ...
}