---
name: "ifdstreambuf"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "4.08.06-1"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/ifdstreambuf"
---

# ifdstreambuf(3bobcat)

Input stream buffer initialized by a file descriptor

## NAME

FBB::IFdStreambuf - Input stream buffer initialized by a file descriptor

## SYNOPSIS

**#include \<bobcat/ifdstreambuf\>**\
 Linking option: *-lbobcat*

## DESCRIPTION

**FBB::IFdStreambuf** objects may be used as a **std::streambuf** of *std::istream* objects to allow extractions from a file descriptor.

File descriptors are not defined within the context of **C++**, but they can be used on operating systems that support the concept. Realize that using file descriptors introduces operating system dependencies.

## NAMESPACE

**FBB**\
 All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace **FBB**.

## INHERITS FROM

**std::streambuf**

## ENUMERATION

The public enumeration **Mode** defined in the class **FBB::IFdStreamBuf** has the following values:

- o

  **CLOSE\_FD**, indicating that the file descriptor used by the object must be closed;

- o

  **KEEP\_FD** (the default) indicating that the file descriptor used by the object must not be closed.

## CONSTRUCTORS

- o

  **IFdStreambuf()**:\
   This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member **open()** can be used subsequently to associate the object with a file descriptor and optionally a buffer size. When the object is destroyed or if the mode-less overloaded version of the **open** member is called, the file descriptor will not be closed.

-

  - o

  **IFdStreambuf(Mode mode)**:\
   This constructor initializes the streambuf, without associating it to a file descriptor, and without using buffering. The member **open()** can be used subsequently to associate the object with a file descriptor and optionally a buffer size. When the object is destroyed or if the mode-less overloaded version of the **open** member is called, the **Mode** argument determines whether the file descriptor will be closed or will remain open.

-

  - o

  **IFdStreambuf(int fd, size\_t n = 1)**:\
   This constructor initializes the streambuf, associating it to file descriptor *fd*, and an optional unget buffer size (by default having size 1).  When the object is destroyed or if the mode-less overloaded version of the **open** member is called, the file descriptor will not be closed.

-

  - o

  **IFdStreambuf(int fd, Mode mode, size\_t n = 1)**:\
   This constructor initializes the streambuf, associating it to file descriptor *fd*, and an optional unget buffer size (by default having size 1).   When the object is destroyed or if the mode-less overloaded version of the **open** member is called, the **Mode** argument determines whether the file descriptor will be closed or will remain open. There is no copy constructor.

## MEMBER FUNCTIONS

All members of **std::streambuf** are available, as **FBB::IFdStreambuf** inherits from this class. Some of the **std::streambuf**’s member are overridden by **FBB::IFdStreambuf**, see below.

- o

  **void close()**:\
   The file descriptor used by the *IFdStreambuf* is closed, irrespective of the *Mode* that was specified when the *IFdStreambuf* object was constructed. Following *close* the *IFdStreambuf* object can no longer be used until one of its *open* members has been called.

- o

  **int fd() const**:\
   The file descriptor used by the *IFdStreambuf* object is returned. If the *OFdStreambuf* is not associated with a file descriptor -1 is returned.

- o

  **void open(int xfd, size\_t n = 1)**:\
   The streambuf is (re)initialized, using file descriptor *fd*, and an optional unget buffer size (by default having size 1). When called repeatedly, the **Mode** specification used whem the object was constructed determines whether the file descriptor will be closed or will remain open.

- o

  **void open(int xfd, Mode mode, size\_t n = 1)**:\
   The streambuf is (re)initialized, using file descriptor *fd*, a file descriptor closing parameter and an optional unget buffer size (by default having size 1). Depending on the **Mode** argument the object’s currently used file descriptor will be closed or will remain open when the *IFdStreambuf* object is destroyed.

Note that there is no overloaded assignment operator available for this class.

## EXAMPLE

To do

## FILES

*bobcat/ifdstreambuf* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md), [**ifdstream**(3bobcat)](/ifdstream/3bobcat.md), [**ofdstreambuf**(3bobcat)](/ofdstreambuf/3bobcat.md),  **std::streambuf**

## BUGS

The member *xsgetn(char \*dest, std::streamsize n)* will set *istream::good()* to *false* when fewer bytes than *n* were read using *istream::read()*. Also see *xsgetn*’s description.

Note that by default the provided file descriptors remain open. The complementary class [**ofdstreambuf**(3bobcat)](/ofdstreambuf/3bobcat.md) *closes* the file descriptor by default. This inconsistency was deliberately accepted to keep the classes interfaces backward compatible.

## DISTRIBUTION FILES

- o

  *bobcat\_4.08.06-x.dsc*: detached signature;

- o

  *bobcat\_4.08.06-x.tar.gz*: source archive;

- o

  *bobcat\_4.08.06-x\_i386.changes*: change log;

- o

  *libbobcat1\_4.08.06-x\_\*.deb*: debian package holding the libraries;

- o

  *libbobcat1-dev\_4.08.06-x\_\*.deb*: debian package holding the libraries, headers and manual pages;

- o

  *http://sourceforge.net/projects/bobcat*: public archive location;

## BOBCAT

Bobcat is an acronym of \`Brokken’s Own Base Classes And Templates’.

## COPYRIGHT

This is free software, distributed under the terms of the  GNU General Public License (GPL).

## AUTHOR

Frank B. Brokken (**f.b.brokken@rug.nl**).
