1

コード内のパラメーターを更新するために、何度も読みたいファイルがあります。ただし、QTextStream を使用すると、値は 1 回だけ読み取られ、その後は毎回 0 が読み取られます。

これは基本的に私のコードです:

int main(){
    QString data;
    QFile Status;

    Status.setFileName("/home/user/status");
    Status.open(QIODevice::ReadOnly);

    QTextStream in(&Status);

    While(1){
        usleep(100);
        data = in.readLine();
        cout << "This is the status: " << data.toInt();
    }
return 0;
}

問題は、「ステータス」ファイルを最初に正しく読み取ることですが、その後「0」を読み取ることです...このファイルを何度も読み取る方法について考えてみてください。

追加情報では、ファイルのデータを変更してアプリのステータスを更新することを考えています。これは、0 から 100 までの数値 (int) です。

助けてくれてありがとう、それは感謝しています.. :)

4

3 に答える 3

3

ファイルを閉じて再度開くか、読み取りポインターをリセットしてください。

その間に編集するので、読み取りの間に閉じる必要がある可能性が最も高いです。

于 2012-10-11T08:58:20.547 に答える
2

ファイルを閉じて、I/O ソースを解放するのはどうですか?

于 2012-10-11T08:59:38.283 に答える
1

あなたのコードは意味がありません。ファイルを正常に開いた場合、誰も書き込み用に開くことができなくなります。

ループを変更できます:

While(1){
    usleep(100);
    if(status.open(QIODevice::ReadOnly) ){
        QbyteArray data = status.readline();//edited
        status.close();
        //read the first line (without newline)
        QString valueString = QString(data).section(0, '\n');
        cout << "This is the status: " << data.toInt();
    }
}

if は、ファイルが別のプログラムによって開かれた場合に待機する単純な試みです。

于 2012-10-11T09:05:12.397 に答える