#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
using namespace std;
class student
{
public:
string s;
int age;
};
ostream& operator<<(ostream &output,const student &s)
{
output << s.s << " " << s.age << "\n";
return output;
}
istream& operator >>(istream& in, student& val)
{
return in >> val.s >> val.age;
}
bool valuecmp(const student & a, const student & b)
{
return a.s < b.s;
}
int main (void)
{
vector<student> a;
student b;
cin>>b.s;
cin>>b.age;
fstream myfile;
myfile.open("a1.txt",ios::app);
int i = 0;
myfile << b;
cout<<"File has been written"<<"\n";
myfile.open("a1.txt",ios::in);
for (string line; getline(myfile, line);)
{
istringstream stream(line);
student person;
stream >> person;
a.push_back(person);
cout<<a[i].s<<a[i].age<<"\n";
i++;
}
sort(a.begin(),a.end(),valuecmp);
fstream my;
my.open("a2.txt",ios::out);
student c;
for (i = 0; i < 2; i++)
{
cout<<a[i].s<<a[i].age<<"\n";
c = a[i];
my << c;
}
return 0;
}
Простая программа для приема пользовательского ввода, хранения в объекте. Перед запуском этой программы у меня есть несколько входов. Поэтому, когда я заставил эту программу принять входные данные от пользователя, напишите в файле, а затем отсортируйте содержимое всего файла, используя операцию сортировки и затем напишите отсортированный вывод в новом файле.Почему я вижу ошибку seg в этом?
Принимает пользовательский ввод, показывает сообщение, File has been written
, но затем показывает ошибку seg. Почему это происходит?
Ну, вы запустили код через отладчик, чтобы узнать, что именно бросает исключение? – OldProgrammer
Вы не закрываете файл после того, как вы его написали, затем попытайтесь его снова открыть. Закройте файл и добавьте некоторую проверку ошибок. –
Почему ваш последний цикл игнорирует размер? –