非常简单的问题c ++

OVE*_*ONE 8 c++ io

刚刚开始学习c ++,我非常难以置信.它是一种令人惊叹的语言,但我在覆盖文件时遇到了一些麻烦

#include <iostream>
#include <fstream>

using namespace std;

int main( )
{
    double payIncrease = 7.6;
    double annual;


    double annualIncrease;
    double newAnnual;

    double monthlyIncrease;
    double newMonthly;

    ifstream inStream;
    ofstream outStream;
Run Code Online (Sandbox Code Playgroud)

//这是问题所在

        inStream.open("annualSalary.txt" );
        outStream.open("newAnnualSalary.txt");
Run Code Online (Sandbox Code Playgroud)

如果我将newAnnualSalary.txt更改为annualSalary.txt,我会得到一些非常奇怪的数字.有谁知道为什么?

    inStream >> annual;
    inStream.close();
    double monthly = (annual/12);

    annualIncrease = ((annual/100)*payIncrease);

    monthlyIncrease = ((monthly/100)*payIncrease);


    newMonthly = (monthly + monthlyIncrease);
    newAnnual = (annual + annualIncrease);




    outStream <<"annual salary was: "<<  annual << "\n" ;  
    outStream <<"new annual salary is " << newAnnual << "\n ";
    outStream <<"new monthly salary is " << newMonthly <<"\n ";



    outStream.close();
    return 0;
Run Code Online (Sandbox Code Playgroud)

}

我知道这是一个非常低技能水平的问题,但我只是在学习.

Nik*_*chi 9

您无法同时打开与istream和ostream相同的文件.由于你很早就关闭了istream,为什么不在istream关闭后把ostream打开?或者,您可以使用允许读取和写入的fstream.


Bil*_*eal 6

流类(在本例中是技术上的basic_filebuf类)是缓存对该文件的读写.不保证不同的文件流是同步的.

fstream对文件使用单个而不是两个单独的流.