tlx
Loading...
Searching...
No Matches
join_generic.hpp
Go to the documentation of this file.
1/*******************************************************************************
2 * tlx/string/join_generic.hpp
3 *
4 * Part of tlx - http://panthema.net/tlx
5 *
6 * Copyright (C) 2007-2017 Timo Bingmann <tb@panthema.net>
7 *
8 * All rights reserved. Published under the Boost Software License, Version 1.0
9 ******************************************************************************/
10
11#ifndef TLX_STRING_JOIN_GENERIC_HEADER
12#define TLX_STRING_JOIN_GENERIC_HEADER
13
14#include <sstream>
15#include <string>
16
17namespace tlx {
18
19//! \addtogroup tlx_string
20//! \{
21//! \name Split and Join
22//! \{
23
24/*!
25 * Join a sequence of strings by some glue string between each pair from the
26 * sequence. The sequence in given as a range between two iterators.
27 *
28 * \param glue string to glue
29 * \param first the beginning iterator of the range to join
30 * \param last the ending iterator of the range to join
31 * \return string constructed from the range with the glue between two strings.
32 */
33template <typename Glue, typename Iterator>
34static inline
35std::string join(Glue glue, Iterator first, Iterator last) {
36 std::ostringstream out;
37 if (first == last) return out.str();
38
39 out << *first;
40 ++first;
41
42 while (first != last)
43 {
44 out << glue;
45 out << *first;
46 ++first;
47 }
48
49 return out.str();
50}
51
52/*!
53 * Join a Container of strings by some glue character between each pair from the
54 * sequence.
55 *
56 * \param glue character for glue
57 * \param parts the vector of strings to join
58 * \return string constructed from the vector with the glue between two strings
59 */
60template <typename Container>
61static inline
62std::string join(char glue, const Container& parts) {
63 return join(glue, std::begin(parts), std::end(parts));
64}
65
66/*!
67 * Join a Container of strings by some glue string between each pair from the
68 * sequence.
69 *
70 * \param glue string to glue
71 * \param parts the vector of strings to join
72 * \return string constructed from the vector with the glue between two strings
73 */
74template <typename Container>
75static inline
76std::string join(const char* glue, const Container& parts) {
77 return join(glue, std::begin(parts), std::end(parts));
78}
79
80/*!
81 * Join a Container of strings by some glue string between each pair from the
82 * sequence.
83 *
84 * \param glue string to glue
85 * \param parts the vector of strings to join
86 * \return string constructed from the vector with the glue between two strings
87 */
88template <typename Container>
89static inline
90std::string join(const std::string& glue, const Container& parts) {
91 return join(glue, std::begin(parts), std::end(parts));
92}
93
94//! \}
95//! \}
96
97} // namespace tlx
98
99#endif // !TLX_STRING_JOIN_GENERIC_HEADER
100
101/******************************************************************************/
std::string join(char glue, const std::vector< std::string > &parts)
Join a vector of strings by some glue character between each pair from the sequence.
Definition join.cpp:16