C++ streambuf::sgetc() 函数



C++ 的std::streambuf::sgetc()函数用于访问输入序列中的下一个字符,而不将其从缓冲区中移除。此函数将字符作为int返回,如果达到输入序列的末尾则返回EOF。

语法

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

int_type sgetc();

参数

它不接受任何参数。

返回值

它返回受控输入序列当前位置的字符,使用成员traits_type::to_int_type将其转换为int_type类型的值。

异常

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

数据竞争

它修改流缓冲区对象。

示例 1

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

#include <iostream>
#include <sstream>
int main() {
   std::stringstream x("Welcome");
   char b;
   std::streambuf * c = x.rdbuf();
   b = c -> sgetc();
   std::cout << "Result : " << b << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : W

示例 2

考虑以下示例,我们将使用sgetc()函数检查流中的第一个字符是否与特定值匹配。

#include <iostream>
#include <sstream>
int main() {
   std::stringstream x("HI");
   char y;
   std::streambuf * z = x.rdbuf();
   y = z -> sgetc();
   if (y == 'H') {
      std::cout << "First Character Is Matched." << std::endl;
   } else {
      std::cout << "First Character Is Not Matched." << std::endl;
   }
   return 0;
}

输出

以下是以上代码的输出:

First Character Is Matched.
streambuf.htm
广告