2014-04-03 106 views
0

我有一個問題,在我的C++代碼中,我想添加'n'的學生與那裏每個日期,但我有一個錯誤,當我比較如果,這裏是我的代碼C++處理'結構'和字符串

#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」然後輸出他的名字,但我得到一個錯誤,沒有輸出inputed日期後,爲什麼呢?當我將「degree」的日期類型更改爲string時,我在if中得到另一個錯誤(不是'學生'的成員)但我真的想用char這樣做,請幫助我嗎?

回答

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; 
}; 

然後你的fo r循環將保持不變

+0

謝謝,但我應該使用A函數嗎?Imean未完成沒有函數 – user3457718

+0

請終止0字符串。 – Deduplicator

+0

除非你有特別的理由重新發明輪子(又名學校):是的,使用標準功能。 – Deduplicator

1

對於char city[20];等成員,您應該考慮使用std::string類型。它提供了在比較中使用的相等運算符(==)和其他幾個功能。