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
廣告