C ++处理' struct'和弦乐

时间:2014-04-03 17:44:25

标签: c++ struct

我的C ++代码存在问题,我想在每个日期添加'n'个学生,但是当我与之比较时我有错误,这里是我的代码

#include <iostream>
#include <stdio.h>
#include <string.h>
struct Address
{
char city[20];
char street[20];    
};
struct University
{
char name1[20],name2[20],name3[20]; 
};
struct student 
{   
char name[20];
char degree[20];
University un;
Address add;
};

using namespace std;
int main (){

    student st[20];
    int n,i,j;
    do{cin>>n;}while(n<=0 || n>20);

    for(i=0;i<n;i++)
    {
        cout<<" Name Of student  "<<i+1<<"\n";
        cin>>st[i].name;

        cout<<" Degree Of student  "<<i+1<<"\n";
        cin>>st[i].degree;

        cout<<"   University 1 \n";
        cin>>st[i].un.name1;
        cout<<"   University 2 \n";
        cin>>st[i].un.name2;
        cout<<"   University 3 \n";
        cin>>st[i].un.name3;

        cout<<" Enter The City Of student  "<<i+1<<"\n";
        cin>>st[i].add.city;

        cout<<" Enter The Street Of student  "<<i+1<<"\n";
        cin>>st[i].add.street;

        cout<<"\n* * * * * * * * * * * * * * * * * * * *\n";

    }   

    for(i=0;i<n;i++)
        if(st[i].degree == "phD")
        cout<<st[i].name<<"  is  OK";

    cout<<endl;
    return 0;
}

所以,我想检查学生是否有“phD”然后输出他的名字,但是我得到一个错误,输入日期后没有输出,为什么?当我将“degree”的日期类型更改为string时,我会在if Say(不是'学生'的成员)中收到另一个错误。但我真的想要用char来做,可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

对于像char city[20];这样的成员,您应该考虑std::string类型。它提供了您在比较中使用的相等运算符(==)和其他一些功能。

答案 1 :(得分:0)

使用strcmphttp://en.cppreference.com/w/c/string/byte/strcmp)来比较char字符串

像:

for(i=0;i<n;i++)
        if(strcmp(st[i].degree,"phD") == 0)
        cout<<st[i].name<<"  is  OK";

如果你想在结构中使用字符串,你可以改变你的代码:

struct student 
{   
char name[20];
string degree;
University un;
Address add;
};

那么你的for循环将保持不变