C++ streambuf::sungetc() 函数



C++ 的 std::streambuf::sungetc() 函数用于从输入序列返回下一个字符,而不会推进流缓冲区的当前位置。

如果没有可用的字符,它将返回 EOF(文件结束)。

语法

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

int_type sungetc();

参数

它不接受任何参数。

返回值

它返回受控输入序列的新当前字符的值,作为 int 类型的值。

异常

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

数据竞争

它修改流缓冲区对象。

示例 1

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

#include <iostream>
#include <sstream>
int main() {
   std::istringstream a("Car");
   char b;
   b = a.get();
   a.rdbuf() -> sungetc();
   b = a.get();
   std::cout << "Result : " << b << std::endl;
   return 0;
}

输出

以上代码的输出如下:

Result : C

示例 2

考虑以下示例,我们将使用 sungetc() 函数,然后是 sgetc() 函数。

#include <iostream>
#include <sstream>
int main() {
   std::string x = "TP";
   std::stringbuf y(x);
   char x1 = y.sbumpc();
   std::cout << "Read character: " << x1 << std::endl;
   y.sungetc();
   char x2 = y.sgetc();
   std::cout << "After sungetc(), peeked character: " << x2 << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Read character: T
After sungetc(), peeked character: T
streambuf.htm
广告