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