sgetn
将 achar*
作为它的第一个参数并向其写入字符。它不会将尾随'\0'
写入char*
.
这种行为似乎与我能找到char*
写入的所有其他时间不一致。但是,它在 Clang、gcc 和 Visual Studio 中是一致的,所以我不敢相信这是所有编译器都有的错误。
该标准是否有理由不需要尾随'\0'
到char*
?
[现场示例]
因为它可以用来读取任意数据,而不仅仅是文本。
以std::istream::read
函数为例,它也有一个char*
参数,但可以用来读取任意数据,包括二进制数据。您不会期望它在从二进制文件读取时添加字符串终止符吗?