C ++存储主要被调用的次数

时间:2013-10-09 23:03:17

标签: c++ static main

每次调用变量时,如何让main()记住变量的值?

即。如果我第一次运行这个程序mainCallCounter = 0,但是当我再次被调用时,我希望它增加计数器

#include <iostream>   
using namespace std;

static int mainCallCounter = 0;

void outputMainCallCount()
{
   cout << "Main was called" << mainCallCounter << "times." << endl;

}

int main()
{

    outputMainCallCount();
    mainCallCounter++;

return 0;

3 个答案:

答案 0 :(得分:2)

主要是您的计划的切入点。 Main被调用一次(通常),当它退出时,你的程序被拆除并清理干净。

显然这意味着局部变量不足。您需要某种外部存储,其持续时间比您的应用程序(即文件系统)更长。

答案 1 :(得分:1)

你做不到。程序的每次运行都是独立的。您需要在某处保存mainCallCounter并在下次应用程序启动时重新读取它。将其写入文件是一种选择,另一种可能是Windows注册表或Mac OS X默认系统等。

答案 2 :(得分:0)

在程序结束时,C ++中声明的所有变量都将过期。如果您想要永久记住程序运行的次数,则需要将该数据存储在外部文件中,并在运行程序时对其进行更新。

例如:

#include <iostream>
#include <fstream>

int numTimesRun() {
    std::ifstream input("counter.txt"); // assuming it exists
    int numTimesRun;
    input >> numTimesRun;
    return numTimesRun;
}

void updateCounter() {
    int counter = numTimesRun();
    std::ofstream output("counter.txt");
    output << counter;
}

int main() {
    int timesRun = numTimesRun();
    updateCounter();

    /* ... */
}

希望这有帮助!