作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
sgetn
将 char*
作为第一个参数并向其写入字符。它不会将尾随 '\0'
写入 char*
。
这种行为似乎与我能找到写入的 char*
的所有其他时间不一致。但是,它在 Clang、gcc 和 Visual Studio 中是一致的,所以我不敢相信这是所有编译器都有的错误。
标准不要求 '\0'
到 char*
的原因是什么?
[ Live Example ]
最佳答案
因为它可以用来读取任意数据,而不仅仅是文本。
例如std::istream::read
函数,它也接受一个char*
参数,但可以用来读取任意数据,包括二进制数据。您不会期望它在读取二进制文件时添加字符串终止符吗?
关于c++ - sgetn 不为空终止字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34135565/
我需要在此处将 boost 头文件中的 sgetn 更改为 _Sgetn_s http://www.boost.org/doc/libs/1_40_0/boost/archive/basic_bina
sgetn将 char* 作为第一个参数并向其写入字符。它不会将尾随 '\0' 写入 char*。 这种行为似乎与我能找到写入的 char* 的所有其他时间不一致。但是,它在 Clang、gcc 和
我有一个代码可以将 std::stringstream 的内容复制到 char * dest static size_t copyStreamData(std::stringstream &
我是一名优秀的程序员,十分优秀!