J'apprends comment utiliser fstream
avec dynamic array
, le programme censé imprimer toutes les données dans txt file
et peut faire quelque chose comme le tri, supprimer le genre ou calculer la moyenne qualité. Mais le code rendu est tout en désordre et les tableaux sont difficiles d'accès.C++ Comment lire un fichier dans un tableau dynamique et accéder aux éléments du tableau
Ceci est l'utilisation du fichier texte pour la pratique.
code:
struct studentData{
string branch;
string name;
char gender;
double grade;
int number;
int total;
};
int main() {
int line_count = 0;
ifstream file_in;
int couter = 0;
file_in.open("student.txt");
if(!file_in.good())
{
cout << "Eror, could not open the file." << endl;
file_in.clear();
return -1;
}
line_count = openFileTest(file_in);
file_in.clear();
file_in.seekg(ios::beg);
studentData* p_studentData = new studentData[line_count];
loadStudentData(file_in, p_studentData,couter);
displayStudentData(p_studentData, line_count,couter);
delete [] p_studentData;
file_in.close();
return 0;
}
int openFileTest(ifstream& file_in)
{
string temp;
int linecount = 0;
while(getline(file_in, temp))
{
linecount ++;
}
return linecount;
}
void loadStudentData(ifstream& file_in,studentData* p_studentData,int couter)
{
int temp ;
file_in >> p_studentData -> total ;
temp = p_studentData->total;
for(int i=0;i<temp;i++)
{
file_in >> p_studentData->branch >> p_studentData->number ;
for(int k=0;k<p_studentData[i].number;k++)
{
file_in >> p_studentData[k].name >> p_studentData[k].gender >> p_studentData[k].grade ;
}
p_studentData++;
}
return;
}
void displayStudentData(studentData* p_studentData, int count_line,int couter)
{
cout << p_studentData->total << endl;
int temp = p_studentData->total ;
for(int i=0;i<temp;i++)
{
cout << p_studentData[i].branch << " " ;
cout << p_studentData[i].number << endl;
for(int j=0;j<p_studentData[i].number;j++)
{
cout << p_studentData[j].name << " " << p_studentData[j].gender << " " << p_studentData[j].grade << endl;
}
}
return;
}
La sortie je reçois est:
[Pour aligner la sortie de lecture sur 'std :: setw'.] (Http://fr.cppreference.com/w/cpp/io/manip/setw) – user4581301
Si votre format de fichier n'est pas encore corrigé, je recommande d'utiliser un analyseur JSON, par exemple https://github.com/nlohmann/json – schorsch312