从.txt文件中获取整数

时间:2017-01-01 17:43:11

标签: c++ file-io int

我正在尝试为一个知道程序打开次数的程序创建一个函数。

为此,我创建了一个函数,用于检查是否存在名为save.txt的文件,如果没有,则创建一个并将int 1写入其中。如果文件存在,则此函数应将其递增1。

问题是虽然我可以将int 1保存到文件中,但之后我无法对文件进行更改。

这是我的代码:

#include <stdio.h>
#include <string>
#include <fstream>
#include <Windows.h>
#include <sstream>
#include <iostream>

fstream savefile("save.txt", ios::in | ios::out);
int counter;
int fileNumber;

void openFile()
{
    if(!savefile)
    {
        cout << "File does not exist!\n";
        int counter = 1;
        savefile.open("save.txt", ios::in | ios::out | ios::app);
        savefile.clear();
        savefile << counter;
        cout << "Int is " << counter << endl;
        savefile.close();
    }
    else
    {
        cout << "File does exist!\n";
        savefile.open("save.txt", ios::in | ios::out | ios::app);
        savefile >> fileNumber;
        savefile.clear();
        savefile << fileNumber +1;
        savefile.close();
    }
}

1 个答案:

答案 0 :(得分:0)

我就这样做了:

#include <iostream>
#include <fstream>

int main()
{
    std::ifstream InFile;
    std::ofstream OutFile;
    int ExecutionCounter;

    // try to read
    InFile.open("SaveFile.txt");

    if (!InFile)
    {
        // file does not exsist - means first time
        ExecutionCounter = 1;
    }
    else
    {
        // else, file exists, read the current and increment it
        InFile >> ExecutionCounter;
        ExecutionCounter++;
        InFile.close();
    }

    // ..
    // your program tasks here
    // ..

    // on closing, save execution counter
    std::remove("SaveFile.txt"); // remove old file
    OutFile.open("SaveFile.txt"); // create new file

    if (OutFile)
    {
        OutFile << ExecutionCounter;
    }
    OutFile.close();

    return 0;
}