我是C ++的新手并且尝试学习如此原谅我犯的任何错误。我有一个文件,在文件中它包含以下格式的数据,
"字符串" ,"字符串",包含100个条目的字符和数字。 即#B; Billy Joel A 96 Tim McCan B 70"。
我想将这些条目存储在一个类数组中(也许我的意思是实例或对象,我是新手,因此不确定)。
这是我的不良尝试: 之所以不好,它没有得到下一组学生信息...我怎么能想出一个循环来处理这个?所以我可以得到所有学生的名字?必须要做的就是不要输入100个变量来输入信息。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Student{
private:
int grade;
char grade_letter;
public:
struct Student_info(){
void set_firstname();
void set_lastname();
string get_firstname();
string get_lastname();
};
}myStudent_info;
/// Set / get code below but left out.
int main()
{
Student myStudent[100];
ifstream myfile("input.txt");
if (myfile.is_open())
{
string a, b;
char c;
int d;
myfile >> a >> b >> c >> d;
for (int i = 0; i < 100; i++) {
myStudent[i].myStudentInfo.set_firstname(a);
myStudent[i].myStudentInfo.set_lastname(b);
/// the rest of variables...etc
}
myfile.close();
}
//Exit
cout << endl;
system("pause");
return 0;
}
答案 0 :(得分:3)
您只输入1名学生的数据,然后循环100次。如果你想输入100名学生的数据并存储每一个,这就是你应该做的事情
for (int i = 0; i < 100; i++) {
myfile >> a >> b >> c >> d;
myStudent[i].myStudentInfo.set_firstname(a);
myStudent[i].myStudentInfo.set_lastname(b);
/// the rest of variables...etc
}
而不是
myfile >> a >> b << c << d;
for (int i = 0; i < 100; i++) {
myStudent[i].myStudentInfo.set_firstname(a);
myStudent[i].myStudentInfo.set_lastname(b);
/// the rest of variables...etc
}
答案 1 :(得分:0)
你在正确的轨道上继承了我将要做的事情。但重点是你需要制作一个矢量或学生阵列。
class Student{
private:
int grade;
char grade_letter;
string firstname;
string lastname;
public:
Studnet();
void set_firstname(string x);
void set_lastname(string x);
void set_letter(char x);
void set_grade(int x);
};
int main() {
Student x;
std::vector<Student> list(100);
sting input;
ifstream myfile("input.txt");
if (myfile.is_open()) {
while( getline(myfile, input)) {
// divide input variable into parts
// use set functions to set student x's values
// push student x into vector of students list using "list.push_back(x);"
}
myfile.close();
}
return 0;
}