sgetn 不为空终止字符串

sgetn Doesn't Null Terminate String

sgetnchar* 作为第一个参数并向其写入字符。它 而不是 将尾随 '[=12=]' 写入 char*

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

标准不要求 char* 的尾随 '[=12=]' 是有原因的吗?

[Live Example]

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

举个例子std::istream::read 函数,它 接受一个 char* 参数,但可用于读取任意数据,包括二进制数据。你不会期望它在读取二进制文件时添加字符串终止符吧?