Подсчитайте количество выполнений программы с использованием файла - PullRequest
1 голос
/ 26 декабря 2011

Я пытаюсь определить количество выполнений кода, используя приведенный ниже код. Но это не работает.

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

В чем может быть проблема?

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011
#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 голос
/ 26 декабря 2011

Я рекомендую разделить задачи (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;
        }
    }
}

Но это еще не все.Каждая из упомянутых выше проблем должна быть выделена в отдельные функции.

И затем вы должны рассмотреть безопасность потоков.Это было бы достаточно легко, используя блокировку.

Но что происходит, когда вы одновременно запускаете несколько экземпляров приложения ?Для этого вам понадобится блокировка на основе файлов.

Если вы хотите подсчитать количество выполнений на нескольких машинах, вам нужно решить еще более интересную проблему.

...