C ++で異なるifstreamモードを使用するにはどうすればよいですか?
質問
- 参照によると、
ifstream infile(" test.txt"、ifstream :: in);
を使用すると、ストリームに対する入力操作が許可されます。
しかし、「入力操作」の例は何ですか? -
ifstream infile(" test.txt"、ifstream :: in | ifstream :: binary);
複数のフラグを使用する正しい構文ですか? -
ifstream ::
をiso ::
に変更すると違いが生じますか?
ありがとう
解決
- 参照によると、ifstream infile(" test.txt"を使用する場合、 ifstream :: in);入力を許可します ストリームの操作。しかし、何ですか "入力の例のいくつか 操作"?
入力ストリームがサポートできるすべてを意味するファイルからの読み取り。 istream
のメンバー関数を参照してください。通常、フォーマットされた読み取り(>>
を使用)とフォーマットされていない読み取り( read
を使用)の両方を実行できます。 ifstream
は、 char
タイプの basic_ifstream
テンプレートの特殊化であることを忘れないでください。必要に応じて、たとえばUTF-16でエンコードされたファイルを読み取る場合、別の特殊化( wifstream
)を使用するか、特別なロケール(これでロケールの詳細を確認できます。
- はifstream infile(" test.txt"、ifstream :: in | ifstream :: binary); 複数を使用する正しい構文 フラグ?
はい。
- ifstream ::をiso ::に変更すると、違いが生じますか
いいえ。
他のヒント
ストリーム操作は、抽出<<
および挿入>>
です。想定して以下を行う場合
file
は fstream
タイプです:
file << 5 << 6.5 << "Hello World!"; // insertion of data (output)
file >> x >> y >> str; // exaction of data (input)
binary stream
として stream
を処理することもできます。その場合、実際には&quot; stream
&quot;のようには見えません。がデータのランダムアクセスを提供します。ネットワークストリームのようにデータが利用できない場合は特に、バイナリモードを使用できない場合があります。挿入と抽出は、ストリームに対する2つの主要な操作です。
ifstream
はデフォルトで input stream
として作成されます。したがって、この場合、 std :: ios :: in
は冗長です。フラグを正しく使用しています。
すべてのストリームは ios
から継承します。したがって、フラグは両方の場所で使用できます。 ios
から直接取得するか、 fstream
から取得できます。
所属していません StackOverflow