-1

設定ファイルを読み取る関数があり、この関数をリロードして新しい変数を取得したかった

void readConfigFile()
{
    ifstream File;
    File.open("config.txt", ios::in);
    while (!File.eof()){
        string line;
        int Hour;
        int Minuts;
        getline(File, line);
        File >> Hour >> Minuts;
    }
    File.close();
}

int main()
{
    readConfigFile();
    while (1) {
        time_t now;
        struct tm *current;
        now = time(0);
        current = localtime(&now);
        if( current->tm_hour == Hour && current->tm_min == Minuts){
            std::cout <<  "Done" << std::endl;
        }
        Sleep(5000);
    }

    return 0;
}

このreadConfigFile()関数をリロードして、アプリケーションの実行中に新しい時間/分を取得する方法

例えば

if(Clicked Button){

reload readConfigFile();

}

リロードについてインターネットで検索している間

演算子のオーバーロードでそれができることがわかりました

しかし、私はそれを使うことができませんでした

私はまだ恩人です:(

ありがとうございました :)

4

2 に答える 2

1

問題は、変数HourMinuts(原文のまま)が関数に対してローカルreadConfigFileであるということだと思います。

つまり、呼び出すときはいつでもreadConfigFile、それらのローカル変数のみを変更し、グローバル変数は変更しないことを意味します。

これらの変数がグローバルである場合は、readConfigFileもう一度呼び出す必要があります。そうすれば、変数が再度読み込まれます。

于 2012-11-22T06:17:39.113 に答える
1

私があなたの要求を誤解していなければ、あなたはすでに自分でコードを書いていると思います。

main()プログラムがwhileループで実行されているときに、新しい時間と分をプログラムにロードするにはどうすればよいですか?

int main()
{
    readConfigFile();
    while (1) {

    // Read the Config file here
    if (Button Clicked)
    {
        readConfigFile();
    }

    time_t now;
    struct tm *current;
    now = time(0);
    current = localtime(&now);  
    if( current->tm_hour == Hour && current->tm_min == Minuts){
        std::cout <<  "Done" << std::endl;
    }
    Sleep(5000);
}

編集:

時間と分がローカル変数であることに気づかなかった私のせい...

それらをグローバル変数に変更してください。

于 2012-11-22T06:25:07.537 に答える