(たとえば、以外)と(たとえば、std::ios_base::ate
以外)のポイントは何ですか?std::ios_base::app
std::ios_base::trunc
std::ios_base::out
std::ios_base::smth
そして、代わりに書くべきstd::ios::smth
ですか?
(たとえば、以外)と(たとえば、std::ios_base::ate
以外)のポイントは何ですか?std::ios_base::app
std::ios_base::trunc
std::ios_base::out
std::ios_base::smth
そして、代わりに書くべきstd::ios::smth
ですか?
std::ios_base::ate カーソルをテキストの最後に配置しますが、 std::ios_base_app はテキストを (書き込み操作で) 最後に追加しますが、最初から読むことはできます :)
std::ios_base::trunc はファイルを切り捨てて空にしますが、 std::ios_base::out はストリームへの書き込みを指定するだけです。
現在、標準を引用することはできません (私のタブレットでは、Acrobat Reader ではコピーが許可されません) が、ISO 14882:1998 のパラグラフ 27.4.2.1.4 から、リンクで確認できる情報はほぼ正確です: http:/ /cplusplus.com/reference/iostream/ios_base/openmode/
総括する:
std::ios_base::app = append
「各書き込みの前に最後までシークする」ことにより、ストリームの最後に追加します
std::ios_base::ate = At The End
開いた後、最後にすぐに開いてシークする
std::ios_base::binary = binary
テキストではなくバイナリで操作を実行する
std::ios_base::in = input
読み取りモードで開く
std::ios_base::out = output
書き込みモードで開く
std::ios_base::trunc = truncate
開始時にストリームを切り捨てます。
これらの値は単なるフラグであるため、最後に次のように読み書きバイナリでストリームを開くことができます。
std::ios_base::in | std::ios_base::out | std::ios_base::ate | std::ios_base::binary
それらの値の使い方については、お好みで。それらはstd::ios_base
クラスの public static フィールドとして宣言されているため (27.4.2 を参照)、または!std::ios::ate
のようなものを使用してアクセスすることができます。cout.binary
あなたが注意しなければならない点は、それが意味するものでも意味std::ios_base::ate
するものstd::ios_base::app
でもないということです。各フィールドには異なる意味があり、使用のケースも異なりますが、それらのほとんどは単独では使用できません :)std::ios_base::out
std::ios_base::trunc