C++ streambuf::sgetn() 函数



C++ 的std::streambuf::sgetn()函数用于从流缓冲区的输入序列中提取指定数量的字符,并将它们存储到提供的数组中。

此函数最多读取给定数量的字符,并相应地修改流缓冲区的内部位置。它返回成功提取的字符数。

语法

以下是 std::streambuf::sgetn() 函数的语法。

streamsize sgetn (char_type* s, streamsize n);

参数

  • s - 指向复制字符序列的数组的指针。
  • n - 要检索的最大字符数。

返回值

此函数返回复制的字符数。

异常

如果抛出异常,则流缓冲区处于有效状态。

数据竞争

它修改由 s 指向的数组中前 n 个字符中的所有字符。

示例 1

在下面的示例中,我们将考虑 sgetn() 函数的基本用法。

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf a("Welcome");
   char b[6] = {
      0
   };
   a.sgetn(b, 5);
   std::cout << "Result : " << b << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : Welco

示例 2

考虑以下示例,我们将使用 pubseekpos() 和 sgetn() 函数。

#include <iostream>
#include <sstream>
int main() {
   std::stringbuf a("ABCDE111223");
   char b[6] = {
      0
   };
   a.pubseekpos(4);
   a.sgetn(b, 4);
   std::cout << "Result : " << b << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Result : E111
streambuf.htm
广告