0

私の課題では、ファイルの読み取りに問題があります。次のコード セグメントを参照してください。

    std::string data;
    std::ifstream fileRead;

    fileRead.open("a.txt");

    while (fileRead >> data) 
    {
        long a = fileRead.tellg();
        fileRead.seekg (a+1, ios::beg);

        std::string check;
        //some code here

        while (fileRead >> check)
        {
            //some code here
        }
        fileRead.seekg (a+1, ios::beg);
    }

ファイル内に同じ単語がいくつあるかを確認する必要があります。私の論理は、単語を読み、それをデータに保持するというものです。次に、fileRead.seekg (a+1, ios::beg); を使用して、その単語の後に読み続けます。次に、ファイル内の各単語を比較します。

ファイル全体をチェックした後、この行 fileRead.seekg (a+1, ios::beg); を使用して、ファイルオブジェクトを次の単語に再度配置します。しかし、この行は機能していません。最初にwhileループが1回だけ機能することを意味します。誰かここで私を助けてください。

ちなみに、ファイル操作は全くの初心者です。その場合、私の論理や概念は正しくない可能性があります。これを行う正しい方法を教えてください。しかし、最初にwhileループが1つの単語を読んだ直後に終了する理由を知る必要がありますか?

4

1 に答える 1

6

ファイルをとして読み取るとwhile(fileRead >> data)、ループを終了する前に、ストリームオブジェクトに失敗フラグが設定されます。実際、それが設定されているため、ループを終了します。この 失敗フラグをクリアする必要があります:

fileRead.clear(); //clear the failure flag
fileRead.seekg (0, ios::beg);
//now read
于 2012-06-28T16:13:00.457 に答える