시작하기 전에 먼저이 오류에 대한 가능한 해결책을 살펴 보았습니다. 불행히도, 그들은 모두 내 프로젝트의 요구 사항 인 배열을 사용하지 않는 것과 관련이 있습니다. 또한, 저는 현재 CS에 소개를하고있어서 내 경험은 아무도 없습니다.오류 : Non-POD 요소 유형 'string'의 가변 길이 배열
배열의 용도는 파일에서 이름을 수집하는 것입니다. 배열을 초기화하기 위해 이름의 수를 세어 크기로 사용합니다. 문제는 제목에 명시된 오류입니다. 그러나 1D 배열을 사용하면서 그 주위에 방법이 표시되지 않습니다.
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
각 줄은 학생 수에 따라 다릅니다.
여전히 배열을 사용하면서 학생 이름을 스트리밍 할 수있는 또 다른 방법은 무엇입니까?
'벡터'사용을 고려 했습니까? – nhgrif
다른 솔루션 중 하나에서 벡터를 보았지만 아직 배웠습니다. 나는 그것을 사용하려고 시도했으나 그것을 이해하지 못했기 때문에 그것을 작동시킬 수 없었다. 죄송합니다. 원래 코드를 수정했습니다. 학생 ID [numStudents] 였지만 오류가 있습니다. – hanipman
벡터를 벡터로 만들거나 벡터에 관한 질문을 게시하는 것이 좋습니다 ... – nhgrif