Akinodales Ответов: 1

Fstream в C++, как сохранить данные


Привет, я новичок и немного озадачен тем, как заставить работать fstream.В моем задании говорится, что мне нужно "использовать 1 операцию чтения/записи".Я хотел бы знать, может ли информация, которую я получил от пользователя из моего кода, быть сохранена в файле .txt?А если да, то с помощью istream или ostream?

Что я уже пробовал:

Это мой код,класс,который я использую для получения продукта, а затем хочу сохранить печатный продукт в своем компьютере. list.txt у меня есть.Это все, что я сейчас понимаю, Спасибо вам за любую помощь.

class Class
{
public:
	int n , amount; string name; float weight;
	vector <string> names;
	vector <int> amounts;
	vector <float> weights;
	void getproducts()
	{
		for (int i = 0; i < n; i++)
		{
			cout << "Give product "<<i+1<<" name,amount and weight : " << endl;
			cin >> name >> amount >> weight;//getting temporary variables.
			names.push_back(name);//assigning them.
			amounts.push_back(amount);
			weights.push_back(weight);
		}
	}
	void printproducts()
	{
		int totali = 0;
		cout << "\nProduct display:\n";
		cout	<< endl;
		for (int i = 0; i < n; i++)
		{
			cout << names[i] << " - " << amounts[i] << " , " << weights[i] << " kg" << endl;
			cout << "------------------------" << endl;
			totali = amounts[i] * weights[i] + totali;
		}
		cout << "Total: ";
		cout << totali << " $ " << endl;
	}
};

int main()
{
	Class market;
	market.getproducts(); market.printproducts();
	ifstream inFile;
	inFile.open("list.txt");
	if (!inFile.fail())
	{
		cout << "Error in opening file." << endl;
		exit(1);
	}



	cin.get(); cin.get();
	return 0;
}

1 Ответов

Рейтинг:
0

Greg Utas

Вы спрашивали о fstream конкретно, так что я буду придерживаться этого. Я не рассматривал остальную часть вашего кода в деталях, потому что что-то сразу привлекло мое внимание.

В main()- ты пишешь

if (!inFile.fail())
{
   cout << "Error in opening file." << endl;
   exit(1);
}

Если все прошло хорошо до этого момента, это всегда будет печатать сообщение об ошибке и выйти! Причина в том, что вы объединили две вещи:

if(!infile)
проверяет наличие ошибки и делает то же самое
if(infile.fail())
но
if(!infile.fail())
означает "если есть не значит, это ошибка...