<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1419840657014599797</id><updated>2012-01-15T18:34:57.442-08:00</updated><category term='0.5'/><category term='Boost.Spirit'/><category term='append'/><category term='Pantheios'/><category term='Fedora'/><category term='flush'/><category term='Visual C++ 10'/><category term='fmt'/><category term='integer-to-string conversion'/><category term='hex'/><category term='widestring'/><category term='ACCU'/><category term='formatting'/><category term='writeln'/><category term='Donations'/><category term='Windows'/><category term='exceptions'/><category term='Boost.Spirit.Karma'/><category term='EOL'/><category term='FastFormat'/><category term='DDJ'/><category term='sinks'/><category term='Overload'/><category term='0.6'/><category term='Dr. Dobb&apos;s'/><category term='0.3'/><category term='performance'/><category term='article'/><category term='fmtln'/><category term='write'/><category term='Quality Matters'/><category term='to_x'/><category term='Visual C++'/><category term='format_iterator'/><category term='integer_to_string'/><category term='Boost'/><category term='Help Forum'/><category term='gotcha'/><category term='STLSoft'/><title type='text'>FastFormat Tips 'n' Tricks</title><subtitle type='html'>THE DIARY OF THE WORLD'S FASTEST, MOST FLEXIBLE, AND MOST ROBUST C++ FORMATTING LIBRARY.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.fastformat.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-4240669457210369680</id><published>2010-11-08T13:05:00.000-08:00</published><updated>2010-11-08T13:05:51.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STLSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Pantheios'/><category scheme='http://www.blogger.com/atom/ns#' term='widestring'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><category scheme='http://www.blogger.com/atom/ns#' term='exceptions'/><title type='text'>Wide String Shims for std::exception</title><content type='html'>The new release of &lt;a href="http://www.stlsoft.org/"&gt;&lt;b&gt;STLSoft&lt;/b&gt;&lt;/a&gt; supports seamless use of exceptions with &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt; (and &lt;a href="http://www.pantheios.org/"&gt;&lt;b&gt;Pantheios&lt;/b&gt;&lt;/a&gt;) in wide-string builds; described on &lt;a href="http://blog.stlsoft-musings.net/2010/11/wide-string-shims-for-stdexception.html"&gt;this post&lt;/a&gt; on the &lt;a href="http://blog.stlsoft-musings.net/"&gt;&lt;b&gt;STLSoft&lt;/b&gt; project blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-4240669457210369680?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/4240669457210369680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/11/wide-string-shims-for-stdexception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/4240669457210369680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/4240669457210369680'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/11/wide-string-shims-for-stdexception.html' title='Wide String Shims for std::exception'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-1094726888645849381</id><published>2010-10-14T22:08:00.000-07:00</published><updated>2010-10-14T22:12:00.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.6'/><category scheme='http://www.blogger.com/atom/ns#' term='Quality Matters'/><category scheme='http://www.blogger.com/atom/ns#' term='flush'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>fmt::flush</title><content type='html'>As discussed in the &lt;a href="http://accu.org/index.php/journals/c275/"&gt;latest instalment&lt;/a&gt; of &lt;a href="http://quality-matters-to.us/"&gt;&lt;i&gt;&lt;b&gt;Quality Matters&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;, having flushing output streams and verifying their status is a pre-requisite of writing a robust program. Doing this with the IOStreams is a somewhat onerous task; see the column for details. Using the new &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;flush()&lt;/span&gt; function, introduced in &lt;a href="http://sourceforge.net/news/?group_id=177382&amp;amp;id=292770"&gt;version 0.6.2&lt;/a&gt;, makes doing so with &lt;b&gt;&lt;a href="http://fastformat.org/"&gt;FastFormat&lt;/a&gt;&lt;/b&gt; a breeze, as in:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;#include &amp;lt;fastformat/ff.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;fastformat/sinks/ostream.hpp&amp;gt;&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&lt;i&gt;&lt;b&gt;ff::flush&lt;/b&gt;&lt;/i&gt;(ff::writeln(std::cout, "Hello, world!"));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;fastformat ff.hpp=""&gt;&lt;fastformat ostream.hpp="" sinks=""&gt;&lt;iostream&gt;&lt;/iostream&gt;&lt;/fastformat&gt;&lt;/fastformat&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-1094726888645849381?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/1094726888645849381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/10/fmtflush.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1094726888645849381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1094726888645849381'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/10/fmtflush.html' title='fmt::flush'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-4955706926091973137</id><published>2010-10-14T19:20:00.000-07:00</published><updated>2010-10-14T21:13:02.639-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Overload'/><category scheme='http://www.blogger.com/atom/ns#' term='0.6'/><category scheme='http://www.blogger.com/atom/ns#' term='Quality Matters'/><category scheme='http://www.blogger.com/atom/ns#' term='ACCU'/><category scheme='http://www.blogger.com/atom/ns#' term='flush'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat 0.6.2 released</title><content type='html'>I've just released version 0.6.2 of &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt;, containing a number of improvements and several new features, which will be detailed in a series of forthcoming posts on &lt;a href="http://blog.fastformat.org/"&gt;this blog&lt;/a&gt;. The new features include the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;flush()&lt;/span&gt; function, whose purpose and behaviour is described in the latest instalment of my &lt;b&gt;&lt;a href="http://quality-matters-to.us/"&gt;&lt;i&gt;Quality Matters&lt;/i&gt;&lt;/a&gt;&lt;/b&gt; column in October's instalment of &lt;a href="http://accu.org/"&gt;ACCU&lt;/a&gt;'s &lt;a href="http://accu.org/index.php/overloadonline"&gt;&lt;b&gt;Overload&lt;/b&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-4955706926091973137?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/4955706926091973137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/10/fastformat-062-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/4955706926091973137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/4955706926091973137'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/10/fastformat-062-released.html' title='FastFormat 0.6.2 released'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-5033194205588210938</id><published>2010-06-23T00:35:00.000-07:00</published><updated>2010-06-23T00:37:06.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='integer_to_string'/><category scheme='http://www.blogger.com/atom/ns#' term='Boost'/><category scheme='http://www.blogger.com/atom/ns#' term='STLSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='write'/><category scheme='http://www.blogger.com/atom/ns#' term='Help Forum'/><category scheme='http://www.blogger.com/atom/ns#' term='fmt'/><category scheme='http://www.blogger.com/atom/ns#' term='integer-to-string conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Boost.Spirit.Karma'/><category scheme='http://www.blogger.com/atom/ns#' term='Boost.Spirit'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat 0.6.1 (alpha 1) released</title><content type='html'>I'm currently releasing version 0.6.1 (alpha 1) of &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt;. Although 0.6 will contain a number of new additions, the first alpha release contains no functional changes. It's entirely about releasing some performance improvements that I've had in the bag for a long time, but keep overlooking.&lt;br /&gt;&lt;br /&gt;The reason I'm doing so now is, in part, that there's been a thread on the &lt;a href="https://sourceforge.net/projects/fastformat/forums/forum/612782"&gt;&lt;b&gt;FastFormat Help Forum&lt;/b&gt;&lt;/a&gt; concerning one potential user's assertion that FastFormat (and some of the &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;STLSoft&lt;/b&gt;&lt;/a&gt; components upon which it relies) is not as quick as my previous claims have indicated. Thankfully, it was easy to perform some simple tests and ascertain that, so far, nothing's overtaken it in terms of performance. In one of the tests I added FastFormat (both &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;write()&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fmt()&lt;/span&gt;) and &lt;a href="http://www.stlsoft.org/doc-1.9/classstlsoft_1_1string__tokeniser.html"&gt;STLSoft's &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;integer_to_string&lt;/span&gt;&lt;/a&gt; to an &lt;a href="http://tinodidriksen.com/2010/02/07/cpp-convert-int-to-string-speed/"&gt;integer-to-string conversion test&lt;/a&gt; that included, amongst other things, &lt;b&gt;Boost.Spirit.Karma&lt;/b&gt;. I'm pleased to report - with Visual C++ 9, at least (haven't had time to use other compilers yet) - that FastFormat holds its own, and with the new optimisations in 0.6 it is the fastest of the possible format components, including ~10% faster than Karma.&lt;br /&gt;&lt;br /&gt;The only thing faster is the low-level &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stlsoft::integer_to_string()&lt;/span&gt; function that FastFormat uses internally, which is a good 30-40% faster than the rest. (Not that I'd advocate using it in application code, of course, since it's not so expressive, and requires pointer and buffer-length parameters.)&lt;br /&gt;&lt;br /&gt;I owe thanks to the OP for causing me to look again and confirm FastFormat's performance advantages, and to release the long-awaited optimisations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-5033194205588210938?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/5033194205588210938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/06/fastformat-061-alpha-1-released.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/5033194205588210938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/5033194205588210938'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/06/fastformat-061-alpha-1-released.html' title='FastFormat 0.6.1 (alpha 1) released'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-1465453595584463928</id><published>2010-06-06T17:36:00.000-07:00</published><updated>2010-06-06T17:36:12.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat 0.5.8 released</title><content type='html'>&lt;a href="http://sourceforge.net/news/?group_id=177382&amp;amp;id=287709"&gt;FastFormat 0.5.8 is released&lt;/a&gt;, containing a fix to ensure that a replacement parameter with a maximum width of 0 truncates (completely) the resulting field. For example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string_t sink;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ff::fmt(sink, "{0,,0}", "abc");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assert("" == sink);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-1465453595584463928?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/1465453595584463928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/06/fastformat-058-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1465453595584463928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1465453595584463928'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/06/fastformat-058-released.html' title='FastFormat 0.5.8 released'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-3268653929180267074</id><published>2010-06-02T15:57:00.000-07:00</published><updated>2010-06-02T16:34:47.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Overload'/><category scheme='http://www.blogger.com/atom/ns#' term='format_iterator'/><category scheme='http://www.blogger.com/atom/ns#' term='DDJ'/><category scheme='http://www.blogger.com/atom/ns#' term='Dr. Dobb&apos;s'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='ACCU'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>format_iterator on Dr Dobb's</title><content type='html'>&lt;a href="http://www.drdobbs.com/"&gt;Dr. Dobb's&lt;/a&gt; have just published a new article, "&lt;a href="http://www.drdobbs.com/cpp/225300162"&gt;&lt;i&gt;C++ and format_iterator&lt;/i&gt;&lt;/a&gt;", describing the design and implementation of the &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt; library's &lt;a href="http://www.fastformat.org/documentation/namespacefastformat_1_1iterators.html"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;format_iterator&lt;/span&gt;&lt;/a&gt;  component.&lt;br /&gt;&lt;br /&gt;The article describes how &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt;'s flexiblity, expressiveness and type-safety has been combined with the output  iterator concept&amp;nbsp; to produce the &lt;a href="http://www.fastformat.org/documentation/namespacefastformat_1_1iterators.html"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fastformat::format_iterator&lt;/span&gt;&lt;/a&gt; component. Applying STL-extension techniques described in &lt;a href="http://www.extendedstl.com/"&gt;&lt;i&gt;Extended   STL, volume 1&lt;/i&gt;&lt;/a&gt;, the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;format_iterator()&lt;/span&gt; component is able to create an output iterator that can receive arbitrate types, apply a format string or arbitrary complexity, and write to an arbitrary sink, as in:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;#include &amp;lt;fastformat/ff.hpp&amp;gt;&lt;br /&gt;&amp;nbsp;#include &amp;lt;fastformat/iterators/format_iterator.hpp&amp;gt;&lt;br /&gt;&amp;nbsp;#include &amp;lt;fastformat/sinks/ostream.hpp&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; numbers[] = { -2, -1, 0, 1, 2 };&lt;br /&gt;&amp;nbsp;char const*&amp;nbsp; strings[] = { "abc", "def", "ghi" };&lt;br /&gt;&amp;nbsp;std::string&amp;nbsp; prefix = "\t";&lt;br /&gt;&amp;nbsp;char const*&amp;nbsp; suffix = "\n";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;std::copy(&lt;br /&gt;&amp;nbsp;&amp;nbsp; numbers, numbers + 5&lt;br /&gt;&amp;nbsp;, &lt;b&gt;ff::format_iterator&lt;/b&gt;(std::cout, "[{0}]"));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;// outputs "[-2][-1][0][1][2]"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;std::copy(&lt;br /&gt;&amp;nbsp;&amp;nbsp; strings, strings + 3&lt;br /&gt;&amp;nbsp;, &lt;b&gt;ff::format_iterator&lt;/b&gt;(std::cout, "{1}'{0}'{2}", prefix, suffix));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;// outputs:&lt;br /&gt;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'abc'&lt;br /&gt;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'def'&lt;br /&gt;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'ghi'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the fourth article on the &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt; library,  following on from the introductory series of three published in &lt;a href="http://www.accu.org/"&gt;ACCU&lt;/a&gt;'s &lt;a href="http://accu.org/index.php/overloadonline"&gt;Overload&lt;/a&gt;  magazine: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://accu.org/index.php/journals/1539"&gt;         &lt;/a&gt;&lt;a href="http://accu.org/index.php/journals/1539"&gt;&lt;b&gt;&lt;i&gt;An  Introduction to  FastFormat, part 1: The State of the Art&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;        &lt;a href="http://accu.org/index.php/journals/1553"&gt;&lt;b&gt;&lt;i&gt;An Introduction to  FastFormat, part 2: Custom Argument and Sink Types&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;        &lt;a href="http://accu.org/index.php/journals/1561"&gt;&lt;b&gt;&lt;i&gt;An Introduction to  FastFormat, part 3: Solving Real Problems, Quickly&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-3268653929180267074?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/3268653929180267074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/06/formatiterator-on-dr-dobbs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/3268653929180267074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/3268653929180267074'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/06/formatiterator-on-dr-dobbs.html' title='format_iterator on Dr Dobb&apos;s'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-8095486067190530386</id><published>2010-05-12T18:02:00.000-07:00</published><updated>2010-05-12T18:02:57.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='write'/><category scheme='http://www.blogger.com/atom/ns#' term='EOL'/><category scheme='http://www.blogger.com/atom/ns#' term='writeln'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='gotcha'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><category scheme='http://www.blogger.com/atom/ns#' term='fmtln'/><title type='text'>Beware of the \r\n gotcha on Windows</title><content type='html'>If (as I have just done) you decide to &lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt; to prepare intermediate text for output, and your program runs on Windows, beware of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;writeln()&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fmtln()&lt;/span&gt; API functions. Consider the following code&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;std::string s;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::writeln(s, "hello"); // s =&amp;gt; "hello\r\n"&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::write(std::cout, s); // writes "hello\r\r\n"&lt;/div&gt;&lt;br /&gt;This occurs because the underlying C standard library expands each standard end-of-line (EOL) character &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\n&lt;/span&gt; to the Windows-specific EOL sequence &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\r&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;\n&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Instead, use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;*ln()&lt;/span&gt; functions on the output, as in:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::write(s, "hello"); // s =&amp;gt; "hello"&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::writeln(std::cout, s); // writes "hello\r\n"&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-8095486067190530386?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/8095486067190530386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/05/beware-of-rn-gotcha-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8095486067190530386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8095486067190530386'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/05/beware-of-rn-gotcha-on-windows.html' title='Beware of the \r\n gotcha on Windows'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-1598579432503634293</id><published>2010-05-12T06:00:00.000-07:00</published><updated>2010-05-12T18:33:03.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><category scheme='http://www.blogger.com/atom/ns#' term='append'/><title type='text'>Remember that FastFormat "appends" to sinks</title><content type='html'>A user recently &lt;a href="https://sourceforge.net/projects/fastformat/forums/forum/612782/topic/3705580"&gt;posted a note&lt;/a&gt; on the &lt;a href="https://sourceforge.net/projects/fastformat/forums/forum/612782"&gt;Help forum&lt;/a&gt;, suggesting that &lt;b&gt;&lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt;&lt;/b&gt; was up to 100 times slower than MFC's &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CString::Format()&lt;/span&gt;. Thankfully that's not the case, and &lt;b&gt;FastFormat&lt;/b&gt; appears to be faster than &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CString::Format()&lt;/span&gt; in even the simple case suggested.&lt;br /&gt;&lt;br /&gt;The reason this appeared to be so was because the test program reused the same &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CString&lt;/span&gt; instance in each call to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fastformat::fmt()&lt;/span&gt;, resulting in concatenation to a huge size. The fault here is no doubt mine, for not having made the nature of &lt;b&gt;FastFormat&lt;/b&gt;'s formatting more clear in the documentation. So I'll try and do so briefly now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All &lt;b&gt;FastFormat&lt;/b&gt; formatting is appending, and this is a deliberate design decision. In part, this is to achieve consistency between immediate sinks such as strings, and stream sinks (such as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;std::cout&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stdout&lt;/span&gt;, ...). Also, it's useful to be able to break apart large or complex formatting operations into statements, without sacrificing performance or expressiveness. (Note: there'll always a small performance penalty for such things, but it will be insignificant in most cases where the size and complexity of the statement demands breaking up.) Consider the following example:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;std::string s;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::fmt(s, "{0};{1};{2}|{3};{4};{5}|{6};{7};{8}|{9};{10};{11}|", a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);&lt;/div&gt;&lt;br /&gt;The same can be achieved as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;std::string s;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::fmt(s, "{0};{1};{2}|", a0, a1, a2);&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::fmt(s, "{0};{1};{2}|", a3, a4, a5);&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::fmt(s, "{0};{1};{2}|", a6, a7, a8);&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ff::fmt(s, "{0};{1};{2}|", a9, a10, a11);&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;In real-world cases, such clarity may be worth paying a few more extra cycles for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-1598579432503634293?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/1598579432503634293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/04/remember-that-fastformat-appends-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1598579432503634293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/1598579432503634293'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/04/remember-that-fastformat-appends-to.html' title='Remember that FastFormat &quot;appends&quot; to sinks'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-149028813757465903</id><published>2010-03-14T17:51:00.000-07:00</published><updated>2010-03-14T17:52:27.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sinks'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>Sink creator function</title><content type='html'>Just started working on a creator function, called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;to_sink()&lt;/span&gt;, which will allow sinks to be generated in situ from free functions. A little like a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bind&lt;/span&gt;, just not as complicated (I hope).&lt;br /&gt;&lt;br /&gt;An example of use would be:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;std::copy(files.begin(), files.end()&lt;br /&gt;&amp;nbsp; , ff::format_iterator(&lt;b&gt;ff::to_sink&lt;/b&gt;(::OutputDebugString)&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , "\t{0}\n"));&lt;br /&gt;&lt;br /&gt;Hopefully I should have something releasable in the next week or so. &lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-149028813757465903?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/149028813757465903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/03/sink-creator-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/149028813757465903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/149028813757465903'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/03/sink-creator-function.html' title='Sink creator function'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-8392191040943708257</id><published>2010-03-09T13:36:00.000-08:00</published><updated>2010-03-09T13:36:25.477-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++ 10'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat 0.5.4 released: VC++ 10 support</title><content type='html'>&lt;a href="https://sourceforge.net/projects/fastformat/files/"&gt;FastFormat&lt;/a&gt; now supports Visual C++ 10. Note that it requires &lt;a href="https://sourceforge.net/projects/stlsoft/files/"&gt;STLSoft 1.9.96&lt;/a&gt; (or later).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-8392191040943708257?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/8392191040943708257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/03/fastformat-054-released-vc-10-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8392191040943708257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8392191040943708257'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/03/fastformat-054-released-vc-10-support.html' title='FastFormat 0.5.4 released: VC++ 10 support'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-2583547220727309861</id><published>2010-03-08T20:17:00.000-08:00</published><updated>2010-03-08T20:17:14.272-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++ 10'/><category scheme='http://www.blogger.com/atom/ns#' term='STLSoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual C++'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>VC++ 10 support imminent</title><content type='html'>Currently &lt;a href="http://blog.stlsoft-musings.net/2010/03/vc-10-support-imminent.html"&gt;adding VC++ support to STLSoft&lt;/a&gt;. Should have &lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt; up and working automatically.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-2583547220727309861?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/2583547220727309861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/03/vc-10-support-imminent.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2583547220727309861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2583547220727309861'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/03/vc-10-support-imminent.html' title='VC++ 10 support imminent'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-2031331985485199294</id><published>2010-03-08T12:41:00.000-08:00</published><updated>2010-03-08T12:41:56.573-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat 0.5.3 released</title><content type='html'>Just &lt;a href="http://fedoraproject.org/"&gt;released the latest version&lt;/a&gt; of &lt;b&gt;&lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt;&lt;/b&gt;, fixing some minor compilation defects encountered on &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problem was my omission of an explicit inclusion of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;limits.h&lt;/span&gt;, required for use of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;INT_MIN&lt;/span&gt; (and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;INT_MAX&lt;/span&gt;) in test.component.inserter.integer.cpp and test.scratch.inserter.integer.cpp. Now fixed.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="https://sourceforge.net/users/yozara"&gt;&lt;b&gt;yozara&lt;/b&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-2031331985485199294?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/2031331985485199294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/03/fastformat-053-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2031331985485199294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2031331985485199294'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/03/fastformat-053-released.html' title='FastFormat 0.5.3 released'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-6489476133130094208</id><published>2010-02-04T22:46:00.000-08:00</published><updated>2010-02-04T22:46:33.153-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='to_x'/><category scheme='http://www.blogger.com/atom/ns#' term='hex'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><category scheme='http://www.blogger.com/atom/ns#' term='0.5'/><title type='text'>FastFormat 0.5.1 (alpha 1) released</title><content type='html'>The latest version of &lt;a href="http://www.fastformat.org/"&gt;&lt;b&gt;FastFormat&lt;/b&gt;&lt;/a&gt;, &lt;a href="http://sourceforge.net/news/?group_id=177382&amp;amp;id=282207"&gt;0.5.1 (alpha 1)&lt;/a&gt;, is released. Along with a bunch of minor changes, the main addition is the support for hex integer conversion, via &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;to_x()&lt;/span&gt;/&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;to_X()&lt;/span&gt;, as in:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ff::fmtln(stm, "i={0}", ff::to_x(123456)); // i=1e240&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ff::fmtln(stm, "i={0}", ff::to_x(123456, 0, 10)); // i=000001e240&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;and, if you want it uppercase:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ff::fmtln(stm, "i={0}", ff::to_X(123456)); // i=1E240 &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ff::fmtln(stm, "i={0}", ff::to_X(123456, 0, 10)); // i=000001E240&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-6489476133130094208?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/6489476133130094208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2010/02/fastformat-051-alpha-1-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/6489476133130094208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/6489476133130094208'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2010/02/fastformat-051-alpha-1-released.html' title='FastFormat 0.5.1 (alpha 1) released'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-8630510180343780431</id><published>2009-11-11T19:32:00.000-08:00</published><updated>2009-11-11T19:32:14.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Donations'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>Now accepting donations</title><content type='html'>&lt;table&gt; &lt;tr&gt;  &lt;td&gt;&lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt; is production-quality software. If you find &lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt; useful, you are asked to &lt;a href="http://sourceforge.net/donate/index.php?group_id=177382"&gt;make a modest donation&lt;/a&gt;, to ensure that the project continues to be supported and enhanced.&lt;/td&gt;  &lt;td align="right" valign="top"&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://sourceforge.net/donate/index.php?group_id=177382"&gt;&lt;img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project" /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-8630510180343780431?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/8630510180343780431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2009/11/now-accepting-donations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8630510180343780431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/8630510180343780431'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2009/11/now-accepting-donations.html' title='Now accepting donations'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-2372581034078272810</id><published>2009-06-01T00:00:00.000-07:00</published><updated>2010-06-02T16:13:52.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Overload'/><category scheme='http://www.blogger.com/atom/ns#' term='ACCU'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat introductory article series #3 published in Overload</title><content type='html'>&lt;span&gt;The June issue of the &lt;a href="http://accu.org/"&gt;ACCU&lt;/a&gt;'s  &lt;b&gt;Overload&lt;/b&gt;         magazine contains         &lt;a href="http://accu.org/index.php/journals/1561"&gt;&lt;b&gt;&lt;i&gt;An  Introduction to FastFormat, part 3: Solving Real Problems, Quickly&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;.         This is the third in a series of three articles about FastFormat  that examine         the current alternatives in C++ formatting, and demonstrate how  FastFormat         provides an optimal mix of robustness, efficiency, flexibility,  expressiveness         and other software quality measures.         &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-2372581034078272810?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2372581034078272810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2372581034078272810'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2009/06/fastformat-introductory-article-series.html' title='FastFormat introductory article series #3 published in Overload'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-2172107309096125258</id><published>2009-05-14T22:19:00.000-07:00</published><updated>2009-05-14T22:23:07.431-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='0.3'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>Starting off ...</title><content type='html'>Just a first post to get us started.&lt;br /&gt;&lt;br /&gt;This blog is going to be about the day-to-day work involved in the &lt;a href="http://www.fastformat.org/"&gt;FastFormat&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;The current release line is 0.3, and the latest version, 0.3.5 offers production quality support for built in. Read more about it &lt;a href="http://www.artima.com/forums/flat.jsp?forum=269&amp;amp;thread=257502"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There aren't many more plans for 0.3, except perhaps to add a makefile for Mac OS-X 64-bit.&lt;br /&gt;&lt;br /&gt;Then new things will be on the cards with 0.4 ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-2172107309096125258?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.fastformat.org/feeds/2172107309096125258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.fastformat.org/2009/05/starting-off.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2172107309096125258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2172107309096125258'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2009/05/starting-off.html' title='Starting off ...'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-2118061236557669907</id><published>2009-04-01T00:00:00.000-07:00</published><updated>2010-06-02T16:12:54.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Overload'/><category scheme='http://www.blogger.com/atom/ns#' term='ACCU'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat introductory article series #2 published in Overload</title><content type='html'>&lt;span&gt;The April issue of the &lt;a href="http://accu.org/"&gt;ACCU&lt;/a&gt;'s  &lt;b&gt;Overload&lt;/b&gt;         magazine contains         &lt;a href="http://accu.org/index.php/journals/1553"&gt;&lt;b&gt;&lt;i&gt;An  Introduction to FastFormat, part 2: Custom Argument and Sink Types&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;.         This is the second in a series of three articles about  FastFormat that examine         the current alternatives in C++ formatting, and demonstrate how  FastFormat         provides an optimal mix of robustness, efficiency, flexibility,  expressiveness         and other software quality measures.         &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-2118061236557669907?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2118061236557669907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/2118061236557669907'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2009/04/fastformat-introductory-article-series.html' title='FastFormat introductory article series #2 published in Overload'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-1419840657014599797.post-5247373819141883816</id><published>2009-02-01T00:00:00.000-08:00</published><updated>2010-06-02T16:11:25.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Overload'/><category scheme='http://www.blogger.com/atom/ns#' term='ACCU'/><category scheme='http://www.blogger.com/atom/ns#' term='FastFormat'/><title type='text'>FastFormat introductory article series #1 published in Overload</title><content type='html'>&lt;span&gt;The February issue of the &lt;a href="http://accu.org/"&gt;ACCU&lt;/a&gt;'s  &lt;b&gt;Overload&lt;/b&gt;         magazine contains         &lt;a href="http://accu.org/index.php/journals/1539"&gt;&lt;b&gt;&lt;i&gt;An  Introduction to FastFormat, part 1: The State of the Art&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;.         &lt;/span&gt;&lt;span&gt;        This is the first in a series of three articles  about FastFormat that examine         the current alternatives in C++ formatting, and demonstrate how  FastFormat         provides an optimal mix of robustness, efficiency, flexibility,  expressiveness         and other software quality measures.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1419840657014599797-5247373819141883816?l=blog.fastformat.org' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/5247373819141883816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1419840657014599797/posts/default/5247373819141883816'/><link rel='alternate' type='text/html' href='http://blog.fastformat.org/2009/02/fastformat-introductory-article-series.html' title='FastFormat introductory article series #1 published in Overload'/><author><name>Matt Wilson</name><uri>http://www.blogger.com/profile/08032564940029177259</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
