sgetn 不为空终止字符串
sgetn Doesn't Null Terminate String
sgetn
将 char*
作为第一个参数并向其写入字符。它 而不是 将尾随 '[=12=]'
写入 char*
。
这种行为似乎与我能找到的 char*
写入的所有其他时间不一致。但是,它 在 Clang、gcc 和 Visual Studio 中是一致的,所以我不敢相信这是所有编译器都有的错误。
标准不要求 char*
的尾随 '[=12=]'
是有原因的吗?
因为它可以用来读取任意数据,而不仅仅是文本。
举个例子std::istream::read
函数,它 也 接受一个 char*
参数,但可用于读取任意数据,包括二进制数据。你不会期望它在读取二进制文件时添加字符串终止符吧?
sgetn
将 char*
作为第一个参数并向其写入字符。它 而不是 将尾随 '[=12=]'
写入 char*
。
这种行为似乎与我能找到的 char*
写入的所有其他时间不一致。但是,它 在 Clang、gcc 和 Visual Studio 中是一致的,所以我不敢相信这是所有编译器都有的错误。
标准不要求 char*
的尾随 '[=12=]'
是有原因的吗?
因为它可以用来读取任意数据,而不仅仅是文本。
举个例子std::istream::read
函数,它 也 接受一个 char*
参数,但可用于读取任意数据,包括二进制数据。你不会期望它在读取二进制文件时添加字符串终止符吧?