このコードを見てください
ofstream obj("output.txt");
obj<<"Hello World";
ここでは、テキスト ファイル「output.txt」に送信します char 配列「Hello World」
現在、char 配列の末尾には終端の null があります。
それで、char配列をテキストファイル「output.txt」に送信すると、終端のnullも送信されて保存されるのですか、それともなぜですか?
ファイルに複数回書き込みを行った場合にどうなるかを考えてみましょう:
ofstream output("myfile.txt");
output << "Hello";
output << " ";
output << "world";
ファイルに何かを書き込むたびに文字列ターミネータが追加された場合、2 回目に書き込むときに、システムはファイル内のゼロを見つけて削除し、新しいテキストの後に再度追加する必要があります。また、システムは、コンソールなどへの出力のために別の方法で実装する必要があります。
あなたの質問に答えるには:いいえ、ターミネータは書かれていません。関数が文字列がメモリ内のどこで終わるかを知るために、メモリ内の文字列によってのみ使用されます。
いいえ。ヌル終了は、C/C++ が文字列の終了位置を知るために使用するものです。
本当に必要な文字の後に 0x00 バイトを書き込むと、制御が失われるのでかなり面倒なことになることに注意してください。では、好きな文字をただ書くのはちょっと面倒ですよね。