Я пытаюсь сортировать файлы, которые мы читаем, из одного большого текста и помещать их в три других файла текста, основываясь на их первом слове, на три категории … Три категории: ученик, учитель и персонал. Я просто застрял в этой точке и не уверен, как поступить. Я приложил код, который у меня есть, а также текстовый файл. Этот код на C ++
16
4 Staff Jean Arp 2000
4 Staff Edgar Degas 1988
7 Student Francis Bacon 2001 MA240 CS222 CS228
5 Student Salvador Dali 1998 CS255
6 Professor Marcel Duchamp 2015 CS302 CS297
4 Staff Andy Warhol 2016
8 Student Man Ray 2008 MA240 CS101 CS201 CS120
4 Staff Rene Magritte 2011
4 Student Franz Kline 1988
4 Student Wassily Kandinsky 2002
4 Staff Lucian Freud 1994
6 Professor Jackson Pollock 1977 CS370 CS470
8 Professor Mark Rothko 1978 CS370 CS470 CS480 CS422
4 Student Egon Schiele 1981
5 Student Diego Rivera 1975 CS422
7 Professor Francis Picabia 2014 CS365 CS326 MA240
#include<iostream>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
int main()
{
string filename;
cout << "What is the name of the file?";
cin >> filename;
ifstream readFile;
readFile.open(filename);
int rows;
readFile >> rows;
cout << rows;
string **table = nullptr;
table = new string*[rows];
vector<int> vector;
for (int i = 0; i < rows; i++)
{
int item;
readFile >> item;
vector.push_back(item);
table[i] = new string[item];
for (int j = 0; j < item; j++)
{
readFile >> table[i][j];
}
}
ofstream toStudent;
toStudent.open("Student.txt");
ofstream toStaff;
toStaff.open("Staff.txt");
ofstream toProfessor;
toProfessor.open("Professor.txt");
for (int i = 0; i < rows; i++)
{
if (table[i][0] == "Student")
{
//this is where I want to send the info to the files
}
}
return 0;
}
Вы делаете это так сложно. Нет необходимости хранить данные, если вы можете управлять ими на лету. Если вы пытаетесь извлечь данные студентов и сохранить их в отдельном файле, это также относится к сотрудникам и преподавателям, а затем следуйте следующей логике
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string filename;
cout << "What is the name of the file?";
cin >> filename;
ifstream readFile;
readFile.open(filename);
int rows;
readFile >> rows;
cout << rows << endl;
//-----------------------------------
ofstream toStudent("Student.txt"), toStaff("Staff.txt"), toProfessor("Professor.txt");
int dummy;
string word, line;
while ( std::getline(readFile, line) ){
std::istringstream iss(line);
iss >> dummy >> word;
if ( word == "Student")
toStudent << line << endl;
else if ( word == "Staff" )
toStaff << line << endl;
else if ( word == "Professor" )
toProfessor << line << endl;
}
return 0;
}
Вы не упомянули ничего о том, что вы пытаетесь отсортировать. Тем не менее, теперь у вас есть данные для каждой категории. Их легко отсортировать.
Других решений пока нет …