私はASCIIとバイナリPGM画像の両方を扱うプログラムを持っています。次を使用してファイルオープンモードを開きます。
ifstream istr(argv[i]);
PGMファイルのヘッダーを読み取った後、それは私がバイナリデータを扱っているのかASCIIを扱っているのかを決定します。次に、istrをバイナリモードに変更する方法はありますか?
モードを変更するためのメンバー関数std::ifstreamはありません。したがって、ファイルをバイナリモードでclose()再作成する必要があります。open()
いいえ、少なくとも移植性はありません。バイナリモードで開き、行末を手動で処理する必要があります。
1>最初にメソッドを呼び出してストリームをクリアし、ストリームClearのモードをリセットします(ストリームがにヒットした場合、end-of-fileまたはに遭遇した場合に必要ですerror)
2>closeメソッドを呼び出してストリームを閉じる必要があります
3>最後に、openメソッドを呼び出して、目的のファイルモードで新しいファイルを開く必要があります