0

每次调用时如何让 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;
4

3 回答 3

2

Main 是程序的入口点。Main 被调用一次(通常),当它退出时,您的程序将被拆除并清理。

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

于 2013-10-09T23:06:03.810 回答
1

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

于 2013-10-09T23:05:53.620 回答
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();

    /* ... */
}

希望这可以帮助!

于 2013-10-09T23:06:09.540 回答