All Projects → catchorg → Textflowcpp

catchorg / Textflowcpp

Licence: bsl-1.0
A simple, single-header-only library, for wrapping text. In C++

A simple way to wrap a string at different line lengths, optionally with indents.

e.g.

std::cout << Column( "This is quite a long string" ).width( 8 ) << std::endl;

will output:

This is
quite a
long
string

Columns can be combined, too:

auto a = Column( "This is a load of text that should go on the left" )
            .width( 10 );
auto b = Column( "Here's some more strings that should be formatted to the right. "
                 "It's longer so there should be blanks on the left" )
            .width( 12 )
            .initialIndent( 2 );
            
                 
auto layout = a + Spacer( 4 ) + b;

std::cout << layout << std::endl;                 

gives you:

 This is a       Here's
 load of       some more
 text that     strings that
 should go     should be
 on the        formatted to
 left          the right.
               It's longer
               so there
               should be
               blanks on
               the left

Not bad!

You can also iterate the lines (which are generated lazily), both from Column and the combined Columns.

See the tests for more.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].