---
name: "a2x"
section: "3bobcat"
platform: "linux"
package: "libbobcat-dev"
version: "6.07.01-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/a2x/3bobcat"
---

# a2x(3bobcat)

Objects performing ascii-to-x (anything) conversions

## NAME

FBB::A2x - Objects performing ascii-to-x (anything) conversions

## SYNOPSIS

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

## DESCRIPTION

**FBB::A2x** objects offer the **C++** equivalent of the standard **C++** string conversion functions like *stol, stoul, stod* etc. These standard **C++** string functions are extremely useful and should probably be preferred over using the members of *A2x* objects, but *A2x* offers additional benefits in that it generalizes these functions to *any* type that can be extracted from a **istream** objects.

## NAMESPACE

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

## INHERITS FROM

**std::istringstream**

## CONSTRUCTORS

- o

  **A2x()**:\
   This constructor constructs an empty *A2x* object. No information can be converted from a  thus constructed *A2x* object.

-

  - o

  **A2x(char const \*text)**:\
   This constructor stores *text*. If *text* represents a textual value of some type, the *A2x* object may be used to initialize or assign this value to a variable of that particular type. Extraction, however is also still possible.

-

  - o

  **A2x(std::string const &str)**:\
   This constructor stores the text contained in *str*. If this text represents a textual value of some type, the *A2x* object may be used to initialize or assign this value to a variable of that particular type. Extraction is also still possible.

The copy and move constructors are available.

## STATIC MEMBER FUNCTION

- o

  **bool lastFail()**:\
   This member returns *true* if the last conversion failed (i.e., the object’s *fail()* member returned *true* and returns *false* otherwise). This member allows checks on the success of the extraction/conversion using anonymous *A2x* objects. The member also returns *true* when no conversions have as yet been performed.\
   Note that this member returns the value of a *thread\_local* static member: different threads cannot inspect other threads’ *lastFail* status.

## MEMBER FUNCTION

All members of the **istringstream** class are available.

- o

  **Type to()**:\
   This member returns any type *Type* supporting extractions from *i\[string\]streams*. If the extraction fails, the *A2x* object’s *good()* member returns *false*, and the *Type*’s default value is returned. This operator was implemented as a template member function. There is also a type conversion operator available (see below), but the member function variant may be preferred over the conversion operator in situations where explicit disambiguation is required (e.g., in cases where a conversion has no obvious type solution such as direct insertions) An example is provided in the **EXAMPLE** section below.

## OVERLOADED OPERATORS

- o

  **operator Type()**:\
   Conversion to any type *Type* supporting extractions from *istreams*. If the extraction fails, the *A2x* object’s *good()* member will return *false*, and the *Type*’s default value is returned. This operator was implemented as a member template.

- o

  **istream &operator\>\>(istream &, Type &)**:\
   Extraction to any type *Type* supporting extractions from *istreams*. If the extraction fails, the *A2x* object’s *good()* member returns *false*, and the *Type*’s default value is returned (this facility is implied by the fact that this class inherits from **istringstream**, but it’s probably useful to stress that the extraction operation is still available).

- o

  **A2x &operator=(char const \*)**:\
   Stores new text in the *A2x* object, resets the status flags to *ios::good*. If a 0-pointer is passed, an empty string is stored.

- o

  **A2x &operator=(std::string const &)**:\
   Stores the text stored in the *std::string* argument in the *A2x* object, resets the status flags to *ios::good*.

The overloaded assignment operator is available

## EXAMPLE

```
    int x = A2x("12");
    A2x a2x("12.50");
    double d;
    d = a2x;
    a2x = "err";
    d = a2x;        // d now 0
    a2x = " a";
    char c = a2x;   // c now ’a’
                    // explicit conversion to `double’
    cout << A2x("12.4").to<double>() << endl;
```

## FILES

*bobcat/a2x* - defines the class interface

## SEE ALSO

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

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- o

  *https://fbb-git.gitlab.io/bobcat/*: gitlab project page;

Debian Bobcat project files:

- o

  *libbobcat6*: debian package containing the shared library, changelog and copyright note;

- o

  *libbobcat-dev*: debian package containing the static library, headers, manual pages, and developer info;

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