sgetn没有Null Terminate String

时间:2015-12-07 14:08:57

标签: c++ buffer stringstream c-strings null-terminated

sgetn为它的第一个参数取char*并为其写入字符。它'\0'写一个尾随char*

这种行为似乎与我每次写入char*的时间都不一致。但是,它与在Clang,gcc和Visual Studio中是一致的,因此我无法相信它是所有编译器都存在的错误。

标准是否有理由不要求'\0'char*

[Live Example]

1 个答案:

答案 0 :(得分:5)

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

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