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