C++ 处理'struct'和字符串
C++ Dealing with 'struct' and Strings
我的C++代码有问题,我想添加"n"个学生,每个日期,但是当我与if进行比较时出现错误,这是我的代码
#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;
}
所以,我想检查一下学生有没有"博士"然后输出他的名字,但是我得到一个错误,输入日期后没有输出,为什么?当我将" degree
"的日期类型更改为string
时,我在if
Say中遇到另一个错误(不是"学生"的成员)。但是我真的很想和char
一起做,能帮我吗?
对于像char city[20];
这样的成员,您应该考虑std::string
类型。 它提供了您在比较中使用的相等运算符(==
)和其他一些功能。
使用 strcmp
(http://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 循环将保持不变