2

sgetn将 achar*作为它的第一个参数并向其写入字符。它不会尾随'\0'写入char*.

这种行为似乎与我能找到char*写入的所有其他时间不一致。但是,它在 Clang、gcc 和 Visual Studio 中一致的,所以我不敢相信这是所有编译器都有的错误。

该标准是否有理由不需要尾随'\0'char*?

[现场示例]

4

1 回答 1

5

因为它可以用来读取任意数据,而不仅仅是文本。

std::istream::read函数为例,它有一个char*参数,但可以用来读取任意数据,包括二进制数据。您不会期望它在从二进制文件读取时添加字符串终止符吗?

于 2015-12-07T14:12:12.030 回答