1

看看这段代码

ofstream obj("output.txt");
obj<<"Hello World";

这里我发送到文本文件“output.txt”字符数组“Hello World”

现在 char 数组的末尾有一个终止的 null 。

因此,当我将 char 数组发送到文本文件“output.txt”时,终止的 null 是否也被发送和存储,为什么?

4

2 回答 2

6

考虑一下如果你多次写入文件会发生什么:

ofstream output("myfile.txt");
output << "Hello";
output << " ";
output << "world";

如果每次向文件中写入内容时都添加了字符串终止符,那么当您第二次写入时,系统将不得不在文件中找到零,将其删除,然后在新文本之后再次添加。此外,系统必须以不同的方式实现以输出到例如控制台。

所以回答你的问题:不,终结符没有写。它仅由内存中的字符串用于函数了解字符串在内存中的结束位置。

于 2012-09-03T14:36:03.617 回答
2

不,空终止正是 C/C++ 用来知道字符串在哪里结束的。

请注意,让它在您真正想要的字符之后写入一个 0x00 字节将是一个非常烦人的失控。然后,只写你想要的字符会有点麻烦。

于 2012-09-03T14:34:12.597 回答