sgetn
为它的第一个参数取char*
并为其写入字符。它不向'\0'
写一个尾随char*
。
这种行为似乎与我每次写入char*
的时间都不一致。但是,它与在Clang,gcc和Visual Studio中是一致的,因此我无法相信它是所有编译器都存在的错误。
标准是否有理由不要求'\0'
跟char*
?
答案 0 :(得分:5)
因为它可以用来读取任意数据,而不仅仅是文本。
拿走,例如std::istream::read
函数,也采用char*
参数,但可用于读取任意数据,包括二进制数据。从二进制文件读取时,您不希望它添加字符串终止符吗?