C ++不会添加传入的值

时间:2017-01-14 15:00:21

标签: c++ file subtotal

当我传入一个值并将其分配给另一个变量时,它似乎永远不会将它们添加到一起。它只输出文件中的两个总计,但不能一起输出。谁能指出我的错误?

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

另外,由于某种原因,总价和价格之间没有空格。

2 个答案:

答案 0 :(得分:0)

有点难以理解你的问题,但是我认为一个问题会让人误解为++运算符的工作方式。 variable_name ++将在当前语句中进行求值后递增变量,++ variable_name将在当前语句中评估之前递增变量

在上面的代码中,++没有效果。如果您希望变量测试的值大于总计1。然后你需要这样做:

int test = ++total;

然而,老实说,在你的情况下,这甚至没有意义,因为此后函数中的任何地方都没有使用。你最好只做一下:

int test = total + 1;

尝试打开有关任何ios或输入/输出格式问题的单独且具体的问题。

看起来你似乎试图用两个函数调用来计算两个函数调用的总数,这个函数永远不会工作,因为总函数会在每个函数调用时重置为0。

我愿意打赌,如果你这样做,Yurchenko建议你可能会发现自己的错误。

答案 1 :(得分: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个对象的构造函数中。