我在源模块中创建了一个名为student的结构,如下所示:
struct Student
{
std::string gradeOption;
std::string name;
unsigned int id;
};
在main.cpp源文件中,我打算阅读遵循这些规则的用户输入:
第一行的正整数,表示学生人数 将有n行,每行都有这种格式:一个id号后跟一个空格,一个等级选项后跟一个空格,学生的名字后跟一个空格。成绩选项后的任何字符都被视为学生姓名。 这是一个例子
5
123 G Tom Cruise
234 G Boo Scary
345 G Jane Student
456 P Joe Student
567 G Too-Many Courses
我无法弄清楚如何创建n个结构。我的问题是我无法弄清楚如何命名它们。如果我要做一个while循环直到i = 5,我仍然无法在不覆盖相同结构的情况下提出名称。另外,我应该在main.cpp文件或structure.cpp文件中创建这些结构吗?
我还尝试通过将id作为数组名称并使其成为字符串数组
来使用数组void createStudentArray(int numStudents, int size)
for (int i = 0; i < numStudents; i++)
std::string arrayName;
std::string gradeOption, studentName
std::string* arrayName = std::string[size];
答案 0 :(得分:1)
我已经制作了示例代码。也许它会有用。
#include <string>
//#include <vector>
#include <iostream>
struct Student {
std::string gradeOption;
std::string name;
unsigned int id;
};
// this tells how to read student from console
void operator>>(std::istream& is, Student& s) {
is >> s.id >> s.gradeOption >> s.name;
}
// this tells how to write student to console
void operator<<(std::ostream& os, Student& s) {
os << s.id << " " << s.gradeOption << " " << s.name << std::endl;
}
int main(int argc, char* argv[]) {
using namespace std;
// here will be placed a number of students to read
size_t count;
// // container for students
// std::vector<Student> students;
// // last read student
// Student student;
cout << "enter count:" << endl;
cin >> count;
cout << "reading " << count << " students" << endl;
// while (count--) {
// cin >> student;
// students.push_back(student);
// }
//
// for (Student& s: students) {
// cout << s;
// }
Student* students = new Student[count];
for (size_t i = 0; i < count; ++i) {
cin >> students[i];
}
for (size_t i = 0; i < count; ++i) {
cout << students[i];
}
delete[] students;
return 0;
}