# # # patch "simplestring_xform.cc" # from [5ddea3ab3ab80af864e0d7c283a097e2a5978e4c] # to [b96fd4fb6ee790e87f4572f1605cf32541d2f4b8] # # patch "simplestring_xform.hh" # from [f23bd9bd2bc2a91360f6a0deee4a01db3f881767] # to [f0f9686a17a7c75e3c657c61e2550ed975e72e01] # ============================================================ --- simplestring_xform.cc 5ddea3ab3ab80af864e0d7c283a097e2a5978e4c +++ simplestring_xform.cc b96fd4fb6ee790e87f4572f1605cf32541d2f4b8 @@ -243,6 +243,26 @@ UNIT_TEST(simplestring_xform, join_lines BOOST_CHECK(joined == "hi\nthere\nuser\n"); } +UNIT_TEST(simplestring_xform, join_words) +{ + vector< utf8 > s; + + s.clear(); + s.push_back(utf8("a")); + BOOST_CHECK(join_words(s)() == "a"); + + s.clear(); + s.push_back(utf8("a")); + s.push_back(utf8("b")); + BOOST_CHECK(join_words(s)() == "a b"); + + s.clear(); + s.push_back(utf8("a")); + s.push_back(utf8("b")); + s.push_back(utf8("c")); + BOOST_CHECK(join_words(s)() == "a b c"); +} + UNIT_TEST(simplestring_xform, split_into_words) { vector words; ============================================================ --- simplestring_xform.hh f23bd9bd2bc2a91360f6a0deee4a01db3f881767 +++ simplestring_xform.hh f0f9686a17a7c75e3c657c61e2550ed975e72e01 @@ -1,9 +1,7 @@ #ifndef __SIMPLESTRING_XFORM_HH__ #define __SIMPLESTRING_XFORM_HH__ -#include #include -#include #include class utf8; @@ -30,9 +28,14 @@ T join_words(std::vector< T > const & in template< class T > T join_words(std::vector< T > const & in) { - std::ostringstream oss; - copy(in.begin(), in.end(), std::ostream_iterator< T >(oss, " ")); - return T(oss.str()); + std::string str; + for (typename std::vector< T >::size_type i = 0; i < in.size(); i++) + { + str += in[i](); + if (i + 1 < in.size()) + str += ' '; + } + return T(str); } void prefix_lines_with(std::string const & prefix,