从.txt文件中获取整数

Getting an integer from .txt file

本文关键字:获取 整数 文件 txt      更新时间:2023-10-16

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

为此,我制作了函数,该函数将检查名为 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();
    }
}

我就是这样做的:

#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;
}