sgetn没有Null终止字符串

Jon*_*Mee 2 c++ buffer c-strings stringstream null-terminated

sgetn取一个char*for它的第一个参数并将字符写入其中.它不是写一个尾随'\0'char*.

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

是否有一个原因,该标准不要求尾部'\0'char*

[ 实例 ]

Som*_*ude 5

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

以例如std::istream::read函数为例,它需要char*参数,但可以用于读取任意数据,包括二进制数据.从二进制文件读取时,您不希望它添加字符串终止符吗?