файл — C ++ не будет добавлять значения, переданные в

Когда я передаю значение и назначаю его другой переменной, кажется, что он никогда не складывается вместе. Это только выводит оба итога в файле, но не вместе. Кто-нибудь может указать на мою ошибку?

void financialReport(int price)
{
ofstream financial_log("financial.txt", ios::app);

int total = 0;
total += price;
int test = total++;
financial_log << "Total: " << test;financial_log.close();
}cout << "Destination:  ";
cin >> destination;
cout << "Price agreed: ";
cin >> price;

financialReport(price);

Это вывод, который я получаю в моем текстовом файле:

Total4Total5

Кроме того, по какой-то причине между суммой и ценой нет места.

0

Решение

Это немного трудно понять твой вопрос, но я считать Одной из проблем может быть путаница в том, как работает оператор ++. variable_name ++ будет увеличивать переменную после ее вычисления в текущем операторе, а ++ variable_name будет увеличивать переменную до его оценка в текущем заявлении.

В вашем коде выше ++ не имеет никакого эффекта. Если вы хотите, чтобы у вашей переменной test было значение на единицу больше, чем total. Тогда вам нужно сделать это:

int test = ++total;

Однако, честно говоря, в вашем случае это даже не имеет смысла, так как total не используется нигде в функции после этого. Вы бы лучше просто делали:

int test = total + 1;

Попробуйте открыть отдельный и конкретный вопрос о проблемах форматирования в формате ios или in / out.

Выглядит так, как будто вы как-то пытаетесь вычислить итоговое значение по двум вызовам функций, используя локальную переменную, которая никогда не будет работать, потому что при каждом вызове функции total будет сбрасываться в 0.

Я был бы готов поспорить, что если вы сделаете так, как предлагает А. Юрченко, вы, вероятно, найдете свой собственный баг.

0

Другие решения

Если вы хотите хранить total значение в файле, вы можете использовать это:

void financialReport(int price) {

ifstream financial_log_in("financial.txt");
int total = 0;
string dummy;
while (financial_log_in >> dummy && dummy != "Total:") {
}
if (dummy == "Total:") {
financial_log_in >> total;
}

ofstream financial_log_out("financial.txt");
total += price;
financial_log_out << "Total: " << total << endl;
financial_log_out.close();
}

Здесь мы читаем текущее значение из financial.txt, обновите и напишите обратно.

Но в случае, если вы просто вызовете функцию несколько раз в течение одной среды выполнения, это будет более эффективным:

void financialReport(int price) {
static int total = 0;
ofstream financial_log("financial.txt");
total += price;
financial_log << "Total: " total << endl;
}

Сюда financialReport(5); financialReport(6); приведет к Total: 11, но при перезапуске программы total будет 0 снова.

Пожалуйста, обратите внимание, что оба метода будут перезаписаны financial.txt, Если вы не хотите этого поведения, добавьте ios::app флаг конструктору ofstream объекты.

0

По вопросам рекламы [email protected]