2
0
mirror of https://github.com/boostorg/format.git synced 2026-01-23 05:32:10 +00:00
Files
format/example/sample_new_features.cpp
Samuel Krempp ebd3cc7363 updated copyrights to "Boost Software License, Version 1.0" on the few files that were still using the old one.
all the files are now under the new copyright.


[SVN r24612]
2004-08-20 09:08:21 +00:00

69 lines
2.3 KiB
C++

// ----------------------------------------------------------------------------
// sample_new_features.cpp : demonstrate features added to printf's syntax
// ----------------------------------------------------------------------------
// Copyright Samuel Krempp 2003. Use, modification, and distribution are
// subject to the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/format for library home page
// ----------------------------------------------------------------------------
#include <iostream>
#include <iomanip>
#include "boost/format.hpp"
int main(){
using namespace std;
using boost::format;
using boost::io::group;
// ------------------------------------------------------------------------
// Simple style of reordering :
cout << format("%1% %2% %3% %2% %1% \n") % "o" % "oo" % "O";
// prints "o oo O oo o \n"
// ------------------------------------------------------------------------
// Centered alignment : flag '='
cout << format("_%|=6|_") % 1 << endl;
// prints "_ 1 _" : 3 spaces are padded before, and 2 after.
// ------------------------------------------------------------------------
// Tabulations : "%|Nt|" => tabulation of N spaces.
// "%|NTf|" => tabulation of N times the character <f>.
// are useful when printing lines with several fields whose width can vary a lot
// but we'd like to print some fields at the same place when possible :
vector<string> names(1, "Marc-François Michel"),
surname(1,"Durand"),
tel(1, "+33 (0) 123 456 789");
names.push_back("Jean");
surname.push_back("de Lattre de Tassigny");
tel.push_back("+33 (0) 987 654 321");
for(unsigned int i=0; i<names.size(); ++i)
cout << format("%1%, %2%, %|40t|%3%\n") % names[i] % surname[i] % tel[i];
/* prints :
Marc-François Michel, Durand, +33 (0) 123 456 789
Jean, de Lattre de Tassigny, +33 (0) 987 654 321
the same using width on each field lead to unnecessary too long lines,
while 'Tabulations' insure a lower bound on the *sum* of widths,
and that's often what we really want.
*/
cerr << "\n\nEverything went OK, exiting. \n";
return 0;
}