C++ streambuf::sbumpc() 函数



C++ 的std::streambuf::sbumpc()函数用于从输入序列中提取并返回下一个字符,并将输入指针前进到后续字符。如果输入序列为空,则返回trauts_type::eof(),表示文件或流的末尾。

语法

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

int_type sbumpc();

参数

它不接受任何参数。

返回值

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

异常

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

数据竞争

它修改流缓冲区对象。

示例 1

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

#include <iostream>
#include <sstream>
int main() {
   std::stringstream a("Welcome");
   std::streambuf * b = a.rdbuf();
   char c;
   while ((c = b -> sbumpc()) != EOF) {
      std::cout << c << ' ';
   }
   return 0;
}

输出

以上代码的输出如下:

W e l c o m e 

示例 2

考虑以下示例,我们将使用 sbumpc() 函数来计算字符的总数。

#include <iostream>
#include <sstream>
int main() {
   std::istringstream x("Tutorialspoint");
   std::streambuf * y = x.rdbuf();
   int z = 0;
   while (y -> sbumpc() != std::char_traits < char > ::eof()) {
      z++;
   }
   std::cout << "Result : " << z << std::endl;
   return 0;
}

输出

以下是以上代码的输出:

Result : 14

示例 3

让我们看看下面的示例,我们将跳过输入序列中的前 11 个字符并打印剩余的字符。

#include <iostream>
#include <sstream>
int main() {
   std::istringstream x("Welcome To TutorialsPoint");
   std::streambuf * y = x.rdbuf();
   for (int a = 0; a < 11; ++a) {
      y -> sbumpc();
   }
   char z;
   while ((z = y -> sbumpc()) != std::char_traits < char > ::eof()) {
      std::cout << z;
   }
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

TutorialsPoint
streambuf.htm
广告