C++ streambuf::eback() 函式



C++ 的std::streambuf::eback()函式用於返回指向流緩衝區物件使用的緩衝區開頭的指標。此指標用於訪問儲存在緩衝區中的資料,允許進行修改內容等操作。

語法

以下是std::streambuf::eback()函式的語法。

char* eback() const;

引數

它不接受任何引數。

返回值

它返回一個指向陣列第一個元素的指標,該陣列包含當前緩衝的受控輸入序列的一部分。

異常

如果丟擲異常,則流緩衝區不會發生任何更改。

資料競爭

它訪問流緩衝區物件。

示例 1

在下面的示例中,我們將考慮eback()函式的基本用法。

#include <iostream>
#include <streambuf>
#include <string>
class a: public std::streambuf {
   public: a(char * base, std::size_t size) {
      setg(base, base, base + size);
   }
   char c() {
      return * eback();
   }
};
int main() {
   std::string x = "Welcome";
   a mybuf( & x[0], x.size());
   std::cout << "Result : " << mybuf.c() << std::endl;
   return 0;
}

輸出

上述程式碼的輸出如下:

Result : W

示例 2

考慮下面的示例,我們將計算從eback()到gptr()的距離。

#include <iostream>
#include <streambuf>
#include <vector>
class x: public std::streambuf {
   public: x(std::vector < char > & a) {
      setg(a.data(), a.data() + 2, a.data() + a.size());
   }
   std::ptrdiff_t y() {
      return gptr() - eback();
   }
};
int main() {
   std::vector < char > z = {'H', 'E', 'L', 'L', 'O'
   };
   x myBuf(z);
   std::ptrdiff_t distance = myBuf.y();
   std::cout << "Result : " << distance << std::endl;
   return 0;
}

輸出

以下是上述程式碼的輸出:

Result : 2
streambuf.htm
廣告
© . All rights reserved.