C++ C++;,使用if/else在struct中返回值
我正在学习“struct”,我不明白它为什么不根据条件从struct返回值。这是我的密码:C++ C++;,使用if/else在struct中返回值,c++,struct,C++,Struct,我正在学习“struct”,我不明白它为什么不根据条件从struct返回值。这是我的密码: #include <iostream> struct Student{ char name[15]; unsigned char mark; }; struct Group{ Student *students; size_t size; }; int main() { const size_t N = 2; std::cout <
#include <iostream>
struct Student{
char name[15];
unsigned char mark;
};
struct Group{
Student *students;
size_t size;
};
int main()
{
const size_t N = 2;
std::cout << "Student(s) we have: " << std::endl;
Group group;
group.size = N;
group.students = new Student[N];
for(size_t i = 0; i < N; ++i)
{
Student &input = group.students[i];
std::cout << "Student #" << i + 1 << ": ";
std::cin >> input.name;
std::cout << "Score: ";
std::cin >> input.mark;
}
for(int i = 0; i < N; ++i)
{
const Student &dummys = group.students[i];
if(dummys.mark == 5) std::cout << dummys.name << std::endl;
}
delete[] group.students;
return 0;
}
#包括
结构学生{
字符名[15];
无符号字符标记;
};
结构组{
学生*学生;
大小;
};
int main()
{
常数大小N=2;
std::cout将标记存储在unsigned char
中,因此当您使用
std::cin>>input.mark;
并键入“5”键入的值不会解析为整数类型,而是保存为带整数值53的“5”字符(来自ASCII表)。
您可以使用dummys.mark=='5'
比较并使代码正常工作。将if(dummys.mark==5)
替换为if(dummys.mark=='5')
并在Student结构声明中再次尝试或将char替换为int[对于变量mark!!]离题:对文本而不是字符数组使用std::string
。std::string
类型可以动态增长,而字符数组具有固定容量,并且很容易溢出。