こんにちは
C++のことで質問なのですが、よろしいでしょうか?
現在、C++でプログラミングしているのですが、バイナリファイルの入出力について質問があります。
ofstreamやifstreamでファイルを開くときにバイナリモードで開く場合は引数にios::binaryを指定しますが
何も指定しなくてもなぜか問題なく動きます。これはどういうことなのですか?
バイナリファイル入出力
Re:バイナリファイル入出力
C++はよくわからないのですが・・
何も指定しなかったらバイナリではなくテキストじゃないですか?
すみません、わかりません(_ _|||)
http://www.kumei.ne.jp/c_lang/cpp/cpp_26.htm
http://www.geocities.jp/ky_webid/cpp/library/033.html
http://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
この辺が参考になれば・・
何も指定しなかったらバイナリではなくテキストじゃないですか?
すみません、わかりません(_ _|||)
http://www.kumei.ne.jp/c_lang/cpp/cpp_26.htm
http://www.geocities.jp/ky_webid/cpp/library/033.html
http://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
この辺が参考になれば・・
Re:バイナリファイル入出力
こまいぬさんのどの環境でプログラムをしていますか?
ofstreamの引数にios::binaryを指定しない場合、テキスト出力として扱われます。
テキスト出力の際のバイナリ出力との違いですが
Windowsでプログラムを組まれているなら、0x0Aの値が0x0D,0x0Aになります。
Macでプログラムを組まれているなら、0x0Aの値が0x0Dになります
Unix,Linuxでプログラムを組まれているなら、たぶん何も変わりません。
もし、出力するデータの中に0x0Aの値がないのであれば
テキスト出力とバイナリ出力は同じ動作をします。
ofstreamの引数にios::binaryを指定しない場合、テキスト出力として扱われます。
テキスト出力の際のバイナリ出力との違いですが
Windowsでプログラムを組まれているなら、0x0Aの値が0x0D,0x0Aになります。
Macでプログラムを組まれているなら、0x0Aの値が0x0Dになります
Unix,Linuxでプログラムを組まれているなら、たぶん何も変わりません。
もし、出力するデータの中に0x0Aの値がないのであれば
テキスト出力とバイナリ出力は同じ動作をします。
Re:バイナリファイル入出力
なるほど、バイナリ出力とテキスト出力の違いは改行文字の扱い方が違うだけのようですね。ありがとうございました。
今までバイナリファイルを扱ったプログラムを書いたことがなかったので、その辺の仕組みをよく理解していませんでした。
今までバイナリファイルを扱ったプログラムを書いたことがなかったので、その辺の仕組みをよく理解していませんでした。