У меня проблема с возвратом объекта в список объектов.
std::ostream& operator << (std::ostream& os, const Class1& sk) {
os << sk.X << 'x' << sk.Y << 'x' << sk.H << ';' << sk.a << ';' << sk.b << '\n';
return os;
}
std::istream& operator >> (std::istream& is, Class1& sk) {
char ch;
is >> sk.X >> ch >> sk.Y >> ch >> sk.H >> ch >> sk.a >> ch >> sk.b >> ch;
return is;
}
void Class1::GetSK_list(std::list<Class1>& SK_list) {
std::ifstream file("file.txt", std::ios::in);
std::list<Class1>::iterator iter = SK_list.begin();
while(file >> *iter) {
"std::cout << *iter"; // checking
SK_list.push_back(*iter);
iter++;
}
file.close();
}
void Class1::SaveSK_list(std::list<Class1>& SK_list) {
std::ofstream file("file.txt", std::ios::out);
for(std::list<Class1>::iterator iter = SK_list.begin(); iter != SK_list.end(); iter++)
file << *iter;
file.close();
}
Когда я использую функцию SaveSK_list, она работает правильно.
Проблема в функции GetSK_list. Если в файле есть одна строка (например, 1x2x3; 4; 5), файл >> * не работает. Там ничего не напечатано (я считаю, что std :: cout << * iter никогда не достигается). </p>
Если в файле более одной строки, печатается только самая первая. После этого появляется ошибка std :: bad_allo c.
Кстати. эти функции находятся в Class1, чтобы использовать перегрузку операторов.