私はオブジェクトのwrite
メソッドを読んでいbasic_ostream
ますが、これは cppreference で見つけたものです:
basic_ostream& write( const char_type* s, std::streamsize count );
として動作し
UnformattedOutputFunction
ます。歩哨オブジェクトを構築してチェックした後、最初の要素が によって指されている文字配列内の連続する位置から文字を出力しますs
。次のいずれかが発生するまで、文字が出力シーケンスに挿入されます。
- 正確に
count
文字が挿入されます- 出力シーケンスへの挿入が失敗する (この場合、
setstate(badbit)
が呼び出されます)
したがって、バッファからストリームに文字のチャンクを書き込むことがわかります。また、文字数は で指定したバイト数count
です。しかし、よくわからないことがいくつかあります。これらは私の質問です:
ストリームに書き込みたいバイト数を
write
指定したい場合にのみ使用する必要がありますか? 通常、char
配列を印刷すると、null バイトに達するまで配列全体が印刷されますが、使用するwrite
場合は、書き込む文字数を指定できます。char greeting[] = "Hello World"; std::cout << greeting; // prints the entire string std::cout.write(greeting, 5); // prints "Hello"
しかし、多分私はこれで何かを誤解しています。
そして、これを使用するコード サンプルでよく見かけます
write
。stream.write(reinterpret_cast<char*>(buffer), sizeof(buffer));
reinterpret_cast
tochar*
が使われているのはなぜですか?ストリームに書き込むときに、そのようなことをいつ行うべきかを知る必要がありますか?
誰かがこれら2つの質問で私を助けることができれば、それは大歓迎です.