1This is autosprintf.info, produced by makeinfo version 4.9 from 2autosprintf.texi. 3 4INFO-DIR-SECTION C++ libraries 5START-INFO-DIR-ENTRY 6* autosprintf: (autosprintf). Support for printf format strings in C++. 7END-INFO-DIR-ENTRY 8 9 This file provides documentation for GNU `autosprintf' library. 10 11 Copyright (C) 2002-2003, 2006-2007 Free Software Foundation, Inc. 12 13 This manual is free documentation. It is dually licensed under the 14GNU FDL and the GNU GPL. This means that you can redistribute this 15manual under either of these two licenses, at your choice. 16 17 This manual is covered by the GNU FDL. Permission is granted to 18copy, distribute and/or modify this document under the terms of the GNU 19Free Documentation License (FDL), either version 1.2 of the License, or 20(at your option) any later version published by the Free Software 21Foundation (FSF); with no Invariant Sections, with no Front-Cover Text, 22and with no Back-Cover Texts. A copy of the license is at 23`http://www.gnu.org/licenses/fdl.html'. 24 25 This manual is covered by the GNU GPL. You can redistribute it 26and/or modify it under the terms of the GNU General Public License 27(GPL), either version 2 of the License, or (at your option) any later 28version published by the Free Software Foundation (FSF). A copy of the 29license is at `http://www.gnu.org/licenses/gpl.html'. 30 31 32File: autosprintf.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) 33 34GNU autosprintf 35*************** 36 37This manual documents the GNU autosprintf class, version 1.0. 38 39* Menu: 40 41* Introduction:: Introduction 42* Class autosprintf:: The `autosprintf' class 43* Using autosprintf:: Using `autosprintf' in own programs 44 45 46File: autosprintf.info, Node: Introduction, Next: Class autosprintf, Prev: Top, Up: Top 47 481 Introduction 49************** 50 51This package makes the C formatted output routines (`fprintf' et al.) 52usable in C++ programs, for use with the `<string>' strings and the 53`<iostream>' streams. 54 55 It allows to write code like 56 57 cerr << autosprintf ("syntax error in %s:%d: %s", filename, line, errstring); 58 59instead of 60 61 cerr << "syntax error in " << filename << ":" << line << ": " << errstring; 62 63 The benefits of the autosprintf syntax are: 64 65 * It reuses the standard POSIX printf facility. Easy migration from 66 C to C++. 67 68 * English sentences are kept together. 69 70 * It makes internationalization possible. Internationalization 71 requires format strings, because in some cases the translator 72 needs to change the order of a sentence, and more generally it is 73 easier for the translator to work with a single string for a 74 sentence than with multiple string pieces. 75 76 * It reduces the risk of programming errors due to forgotten state 77 in the output stream (e.g. `cout << hex;' not followed by `cout << 78 dec;'). 79 80 81File: autosprintf.info, Node: Class autosprintf, Next: Using autosprintf, Prev: Introduction, Up: Top 82 832 The `autosprintf' class 84************************* 85 86An instance of class `autosprintf' just contains a string with the 87formatted output result. Such an instance is usually allocated as an 88automatic storage variable, i.e. on the stack, not with `new' on the 89heap. 90 91 The constructor `autosprintf (const char *format, ...)' takes a 92format string and additional arguments, like the C function `printf'. 93 94 Conversions to `char *' and `std::string' are defined that return 95the encapsulated string. The conversion to `char *' returns a freshly 96allocated copy of the encapsulated string; it needs to be freed using 97`delete[]'. The conversion to `std::string' returns a copy of the 98encapsulated string, with automatic memory management. 99 100 The destructor `~autosprintf ()' destroys the encapsulated string. 101 102 An `operator <<' is provided that outputs the encapsulated string to 103the given `ostream'. 104 105 106File: autosprintf.info, Node: Using autosprintf, Prev: Class autosprintf, Up: Top 107 1083 Using `autosprintf' in own programs 109************************************* 110 111To use the `autosprintf' class in your programs, you need to add 112 113 #include "autosprintf.h" 114 using gnu::autosprintf; 115 116to your source code. The include file defines the class `autosprintf', 117in a namespace called `gnu'. The `using' statement makes it possible to 118use the class without the (otherwise natural) `gnu::' prefix. 119 120 When linking your program, you need to link with `libasprintf', 121because that's where the class is defined. In projects using GNU 122`autoconf', this means adding `AC_LIB_LINKFLAGS([asprintf])' to 123`configure.in' or `configure.ac', and using the @LIBASPRINTF@ Makefile 124variable that it provides. 125 126 127 128Tag Table: 129Node: Top1347 130Node: Introduction1707 131Node: Class autosprintf2858 132Node: Using autosprintf3868 133 134End Tag Table 135