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

# ohexstreambuf(3bobcat)

Writes characters written to an ostream as hex values

## NAME

FBB::OHexStreambuf - Writes characters written to an ostream as hex values

## SYNOPSIS

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

## DESCRIPTION

**OHexStreambuf** is a specialization of *FBB::OFilterStreambuf* inserting all the characters it receives to a destination file as 2-character wide hexadecimal values. Optionally a maximum linelength can be specified.

Note that all information received by an *OHexStreambuf* object is inserted as (a series of) hexadecimal values, not only plain characters. E.g., when inserting the value 123 the characters *’1’, ’2’* and *’3’* are successively inserted and so this will result in the string *313233* being inserted into the destination stream.

## NAMESPACE

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

## INHERITS FROM

FBB::OFilterStreambuf

## CONSTRUCTOR

- o

  **OFoldStreambuf(std::ostream &stream, size\_t width = 0)**:\
   The hexadecimal characters produced by the *OFoldStreambuf* object will be inserted into *stream*. Optionally the maximum line width (in number of characters) may be specified using *width*. The (default) value 0 indicates that no line breaks are requested.

The destructor writes any buffered information to the destination stream and will then flushes the destination stream.

## MEMBER FUNCTIONS

All members of **FBB::OFilterStreambuf**, in particular its *out()* and *open()* members are available, as **FBB::OHexStreambuf** inherits from this class.

- o

  **size\_t size() const**:\
   This member returns the next column offset where the next hexadecimal character will appear. If a maximum line length is requested and *size()* does not return 0 then the last line inserted was not terminated by a *’\\n’* character. See also the example below.

-

  This member’s return value is undefined if  no maximum line length was requested.

## PROTECTED MEMBER FUNCTION

The member listed in this section implements the tasks of the comparably named virtual function in the class’s private interface. This separates the redefinable interface from the user-interface. The class **OHexStreambuf** can, in accordance with Liskov’s Substitution Principle, be used as a *std:streambuf*; but it also offers a facility for classes deriving from **OHexStreambuf**. This facility is listed here.

- o

  **int pSync()**:\
   The contents of the **OHexStreambuf**’s internal buffer is flushed.

## STATIC MEMBER

- o

  **std::string text2bin(std::string const &in)**:\
   This static member can be used to convert a series of hexadecimal characters generated by a *OHexStreambuf* object back to their binary form. E.g, when called as *OHexStreambuf::text2bin("736d616c6c206976")* then the returned *std::string* will contain 8 characters, having respectively the binary values 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x69, and 0x76.

-

  This function does *not* verify whether its argument is properly formed. A properly formed argument consists of an even number of hexadecimal number characters (’0’ until ’9’, ’a’ until ’f’ (or uppercase)). For improperly formed arguments the return value is undefined.

-

  ## EXAMPLE

```
    #include <iostream>
    #include <bobcat/ohexstreambuf>
    using namespace std;
    using namespace FBB;
    int main()
    {
        OHexStreambuf ohex(cout, 40);
        ostream out(&ohex);
        out << cin.rdbuf();
        if (ohex.size())
            cout << ’\n’;
    }
```

## FILES

*bobcat/ohexstreambuf* - defines the class interface

## SEE ALSO

[**bobcat**(7)](/bobcat/7.md), [**ofilterstreambuf**(3bobcat)](/ofilterstreambuf/3bobcat.md)

## BUGS

None Reported.

## 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**).
