Я делаю программу, которая предназначена для сохранения информации о некоторых классах.Я использую ofstream и ifstream.Ofstream, кажется, работает должным образом, поскольку создает одну строку для каждого атрибута.Это следующий .txt, созданный моей функцией ofstream:
Audifonos
4.2
200
Water
10.4
12
Eggs
5.8
24
Атрибуты объявлены как:
string name;
int cantidad;
float precio;
Это моя функция ofstream.
ofstream archivo("productos.txt", ios::out);
if(archivo.is_open())
{
for(size_t i(0); i<arreglo.size(); i++)
{
Producto &p = arreglo[i];
archivo << p.getName() <<endl;
archivo << p.getPrecio() <<endl;
archivo << p.getCantidad() <<endl;
}
archivo.close();
}
И это моя функция ifstream.
ifstream archivo("productos.txt");
if(archivo.is_open())
{
while(!archivo.eof())
{
string linea;
Producto p;
getline(archivo,linea);
p.setName(linea);
getline(archivo, linea);
p.setPrecio(stof(linea));
getline(archivo,linea);
p.setCantidad(stoi(linea));
if(archivo.eof())
{
break;
}
agregarp(p);
}
}
Не проблема синтаксиса, но я получаю эту ошибку, когда выполняю функцию при использовании программы:
terminate called after throwing an instance of 'std::invalid_argument'
what(): stof
Большое спасибо,Интересно, как это решить.