ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
Loading...
Searching...
No Matches
StringWriter Class Reference

Description:


This class is a simple helper class that converts strings of the default character type to narrow strings as expected by std::ostream objects.

The basic goal of this class is to avoid preprocessor directives for code selection when the default string type of ALib uses wide characters.

For example, to write string data into a file, the following approach is advised:

  1. Create an output stream of (derived) type std::ostream.
  2. Create an object of this class and pass the output stream via SetStream.
  3. Write string data stored in objects of platform dependent type alias alib::AString by passing those to method Write.

Within step 3, the compiler chooses the right overloaded version of method Write. Hence the potentially needed conversion of the string data done transparently and only if needed.

See also
Class StringReader .

Definition at line 188 of file std_strings_iostream.hpp.

#include <std_strings_iostream.hpp>

Collaboration diagram for StringWriter:
[legend]

Public Field Index:

::std::ostream * ostream
 

Public Method Index:

 StringWriter ()
 
::std::ostream * GetStream ()
 
void SetStream (::std::ostream *os)
 
void Write (const NString &src)
 
void Write (const WString &src)
 
integer WriteAndGetWideLength (const NString &src)
 
integer WriteAndGetWideLength (const WString &src)
 

Field Details:

◆ converter

NAString converter
protected

The string buffer used for conversion.

Definition at line 192 of file std_strings_iostream.hpp.

◆ ostream

::std::ostream* ostream

The output stream as provided with SetStream. Will be set to the std::cout, respectively std::wcout in the constructor.

Definition at line 197 of file std_strings_iostream.hpp.

Constructor(s) / Destructor Details::

◆ StringWriter()

StringWriter ( )
inline

Constructor. Invokes SetStream passing std::cout.

Definition at line 204 of file std_strings_iostream.hpp.

Method Details:

◆ GetStream()

::std::ostream * GetStream ( )
inline

Returns the output stream previously set with SetStream.

Returns
The output stream set with SetStream.

Definition at line 224 of file std_strings_iostream.hpp.

◆ SetStream()

void SetStream ( ::std::ostream * os)
inline

Sets the output stream.

Parameters
osPointer to the output stream to write to.

Definition at line 214 of file std_strings_iostream.hpp.

◆ Write() [1/2]

void Write ( const NString & src)
inline

Write the given narrow string to the stream.

Note
The return value is the length of the given string if it was converted to wide string, even in the case that it is not needed to be converted. This is useful to determine the real output width. Of-course, in many locales, this is still not the real output width, because even uni-code characters are not guaranteed to represent exactly one printable character. But still, this value is already a much better approximation than the length of the given narrow string.
Parameters
srcThe string to write.

Definition at line 288 of file std_strings_iostream.hpp.

Here is the call graph for this function:

◆ Write() [2/2]

void Write ( const WString & src)
inline

Write the given wide string to the stream.

Parameters
srcThe string to write.

Definition at line 302 of file std_strings_iostream.hpp.

Here is the call graph for this function:

◆ WriteAndGetWideLength() [1/2]

integer WriteAndGetWideLength ( const NString & src)
inline

Write the given narrow string to the stream and return the length of the string given if it was converted to wide characters.

Note
The return value is the length of the given string if it was converted to wide string, even though in this overloaded version it is not needed to be converted. This is useful to determine the "real" output width when output text is to be formatted. Of-course, in many locales, this is still not the real output width, because even uni-code characters are not guaranteed to represent exactly one printable character. But still, this value is already a much better approximation than the length of the given narrow string.
Parameters
srcThe string to write.
Returns
Returns the length of the given string as wide string.

Definition at line 245 of file std_strings_iostream.hpp.

Here is the call graph for this function:

◆ WriteAndGetWideLength() [2/2]

integer WriteAndGetWideLength ( const WString & src)
inline

Write the given wide string to the stream and returns the length of the string given

Parameters
srcThe string to write.
Returns
Returns the length of the given wide string.

Definition at line 262 of file std_strings_iostream.hpp.

Here is the call graph for this function:

The documentation for this class was generated from the following file: