C++ streambuf - sgetn
描述
它用于获取字符序列并使用相同的参数 s 和 n 调用受保护的虚拟成员 xsgetn。
声明
以下是 std::basic_streambuf::sgetn 的声明。
streamsize sgetn (char_type* s, streamsize n);
参数
s指向复制字符序列的数组的指针。
n要检索的最大字符数。
返回值
它返回复制的字符数。
异常
Basic guarantee − 如果抛出异常,则流缓冲区处于有效状态。
数据竞争
它最多修改 s 指向的数组中的所有前 n 个字符。
示例
在下面的例子中解释了 std::basic_streambuf::sgetn。
#include <iostream> #include <fstream> int main () { char* contents; std::ifstream istr ("sample.txt"); if (istr) { std::streambuf * pbuf = istr.rdbuf(); std::streamsize size = pbuf->pubseekoff(0,istr.end); pbuf->pubseekoff(0,istr.beg); contents = new char [size]; pbuf->sgetn (contents,size); istr.close(); std::cout.write (contents,size); } return 0; }