У меня есть программа, в которой мне нужна опция для импорта информации о событии в календарь.Когда события экспортируются, каждая часть информации имеет свою собственную строку, поэтому я использую комбинацию оператора >> (для типов int) и getline (для строк).Есть лучший способ сделать это?Так много строк кода только для чтения ввода кажутся немного неорганизованными, и, возможно, это также не самый безопасный способ решения этой проблемы.Кто-нибудь предлагает какие-либо улучшения?Кроме того, лучше потом закрыть файл или это делается автоматически?
bool importFunction(const string &file, const Calendar &cal) {
ifstream reader;
reader.open(file);
string type, description, country, city, street;
int day, month, year, fHour, fMinute, fSecond, tHour, tMinute, tSecond,
number_street;
if(reader.is_open()){
getline(reader, type);
getline(reader, description);
reader >> day >> month >> year >> fHour >> fMinute >> fSecond >> tHour >>
tMinute >> tSecond;
reader.ignore();//ignore trailing newline
getline(reader, country);
getline(reader, city);
getline(reader, street);
reader >> number_street;
if(type=="long") {
LongEvent event(description, Date(day, month, year), Time(fHour, fMinute,
fSecond), Time(tHour, tMinute, tSecond), Location(country, city, street,
number_street));
cal.addEvent(event);
}
else if(type=="short") {
ShortEvent event(description, Date(day, month, year), Time(fHour, fMinute,
fSecond), Time(tHour, tMinute, tSecond), Location(country, city, street,
number_street));
cal.addEvent(event);
}
else cout << "FILE WAS NOT OPENED" << endl;
}