簡體   English   中英

從文件中讀取並存儲到數組 C++

[英]reading from file and storing into array C++

我需要編寫一個從文件讀取並將值存儲到並行數組中的函數。 在文本文件中我有一個名字,在下一行我有一組 4 個分數。 關於如何實現這一目標的任何提示。 這是文本文件的示例

joe
30 75 90 88
ben 
100 75 93 20

現在這是我到目前為止的代碼

ifstream input;

int main()
 {
string nameArray[];
double grades[];
void nameGrade(string[], double[]);

input.open("scores.txt");

nameGrade(nameArray, grades);

for (int i = 0; i <4; i++)
{
    cout << "student name: " << nameArray[i] << " Student Grades: " << grades[i] << endl;
}
input.close();
return 0;
}

void nameGrade(string name[], double grade[])
{
    for (int i = 0; i < 5; i++)
    {
        getline(input,studentName[i]);
        input >> studentGrade[i];
    }
}

由於每條記錄只有 1 個名稱和多個等級,因此每條記錄將名稱的讀取移動到for循環之前:

void nameGrade(string& name,
               double grade[])
{
    getline(input,name);
    for (int i = 0; i < 5; i++)
    {
        input >> studentGrade[student_index * 5 + i];
    }
}

您的設計存在復雜性。 每個學生都有不止一個年級。 因此,要處理這種關系,您將需要一個二維學生數組或一個結構數組:

struct Student_Name_Grades
{
  std::string name;
  std::vector<double> grades; // substitute array here if necessary.
};
std::vector<Student_Name_Grades> student_info;
// Or:  Student_Name_Grades student_info[MAXIMUM_STUDENTS];

另一種選擇是擁有 5 倍於學生人數的成績名額。 因此,要訪問學生 #2 的成績:

const unsigned int GRADES_PER_STUDENT = 5;
unsigned int student_index = 2;
double grade_1 = grades[student_index * GRADES_PER_STUDENT + 0];
double grade_2 = grades[student_index * GRADES_PER_STUDENT + 1];
double grade_3 = grades[student_index * GRADES_PER_STUDENT + 2];
double grade_4 = grades[student_index * GRADES_PER_STUDENT + 3];
double grade_5 = grades[student_index * GRADES_PER_STUDENT + 4];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM