我试图使用下面的代码查找代码执行的次数。但它不起作用。
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
fstream outputFile;
outputFile.open("count.txt");
int count;
outputFile>>count;
count = count + 1;
cout<<count;
outputFile <<count << endl;
outputFile.close();
getch();
return 0;
}
可能是什么问题?
答案 0 :(得分:2)
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
int count;
ifstream inputFile("count.txt");
inputFile >> count;
inputFile.close();
count ++ ;
ofstream outputFile("count.txt");
outputFile << count + 1 << endl;
outputFile.close();
cout << count;
getch();
return 0;
}
答案 1 :(得分:1)
我建议将(1)读取文件,(2)操作数据和(3)更新文件的问题分开。
您还应该引入一些错误处理并初始化变量。
以下是一些可以帮助您入门的代码:
#include <iostream>
#include <fstream>
int main()
{
using namespace std;
const char filename[] = "count.txt";
int count = 0;
{
ifstream inputFile(filename);
if (!(inputFile >> count))
{
cerr << "An error occurred while reading the persisted count" << endl;
}
}
++count;
cout << count;
{
ofstream outputFile(filename);
if (!(outputFile << count << endl))
{
cerr << "An error occurred while writing the persisted count" << endl;
}
}
}
但这还没有结束。我上面提到的每个问题都应该被提取到单独的函数中。
然后你必须考虑线程安全。使用锁定这很容易。
但是,当您同时执行的多个应用实例时会发生什么?你需要为此做一些基于文件的锁定。
如果你想在多台机器上计算执行次数,你需要解决一个更有趣的问题。