在開始之前,我必須首先說明我已經研究了此錯誤的可能解決方案。不幸的是,它們都與不使用數組有關,這是我的項目需求。此外,我目前正在將CS入門,所以我的經歷幾乎沒有。錯誤:非POD元素類型'字符串'的可變長度數組
該數組的目的是從文件中收集名稱。因此,爲了初始化數組,我計算了名稱的數量並將其用作大小。問題是標題中提到的錯誤,但在仍然使用一維數組的情況下,我看不到解決方法。
的main.cpp
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
#include <iostream>
#include "HomeworkGradeAnalysis.h"
using namespace std;
int main()
{
ifstream infile;
ofstream outfile;
infile.open("./InputFile_1.txt");
outfile.open("./OutputfileTest.txt");
if (!infile)
{
cout << "Error: could not open file" << endl;
return 0;
}
string str;
int numLines = 0;
while (infile)
{
getline(infile, str);
numLines = numLines + 1;
}
infile.close();
int numStudents = numLines - 1;
int studentGrades[numStudents][maxgrades];
string studentID[numStudents];
infile.open("./InputFile_1.txt");
BuildArray(infile, studentGrades, numStudents, studentID);
infile.close();
outfile.close();
return 0;
}
HomeworkGradeAnalysis.cpp
using namespace std;
void BuildArray(ifstream& infile, int studentGrades[][maxgrades],
int& numStudents, string studentID[])
{
string lastName, firstName;
for (int i = 0; i < numStudents; i++)
{
infile >> lastName >> firstName;
studentID[i] = lastName + " " + firstName;
for (int j = 0; j < maxgrades; j++)
infile >> studentGrades[i][j];
cout << studentID[i] << endl;
}
return;
}
HomeworkGradeAnalysis.h
#ifndef HOMEWORKGRADEANALYSIS_H
#define HOMEWORKGRADEANALYSIS_H
const int maxgrades = 10;
#include <fstream>
using namespace std;
void BuildArray(ifstream&, int studentGrades[][maxgrades], int&, string studentID[]);
void AnalyzeGrade();
void WriteOutput();
#endif
的文本文件是簡單的格式:
Boole, George 98 105 0 0 0 100 94 95 97 100
每條線都是這樣的,有不同數量的學生。
什麼是另一種方法,我仍然可以流數據同時仍然使用數組的學生的名字?
你有沒有考慮過使用'vector'? – nhgrif
我見過其他解決方案之一的矢量,但我還沒有學到它。我試圖使用它,但我不太瞭解它,所以我無法使它工作。對不起,我們編輯了原來的代碼。這是studentID [numStudents],但這就是錯誤。 – hanipman
你可能會更好地嘗試讓載體工作併發佈一個關於載體的問題...... – nhgrif