Line data Source code
1 :
2 : /* Copyright (c) 2017, Stefan.Eilemann@epfl.ch
3 : *
4 : * This library is free software; you can redistribute it and/or modify it under
5 : * the terms of the GNU Lesser General Public License version 2.1 as published
6 : * by the Free Software Foundation.
7 : *
8 : * This library is distributed in the hope that it will be useful, but WITHOUT
9 : * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10 : * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11 : * details.
12 : *
13 : * You should have received a copy of the GNU Lesser General Public License
14 : * along with this library; if not, write to the Free Software Foundation, Inc.,
15 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16 : */
17 :
18 : #pragma once
19 : #include <string>
20 :
21 : namespace lunchbox
22 : {
23 : namespace string
24 : {
25 : /**
26 : * Prepend each line of the given input with the given text.
27 : *
28 : * @param input the input string to add the prepended text
29 : * @param text text to prepend
30 : * @return the prepended string
31 : * @version 1.16
32 : */
33 6 : inline std::string prepend(const std::string& input, const std::string& text)
34 : {
35 6 : std::string output;
36 6 : size_t pos = 0;
37 13 : for (size_t nextPos = input.find('\n', pos); nextPos != std::string::npos;
38 : nextPos = input.find('\n', pos))
39 : {
40 7 : output += text + input.substr(pos, nextPos - pos + 1);
41 7 : pos = nextPos + 1;
42 : }
43 6 : output += text + input.substr(pos, std::string::npos);
44 6 : return output;
45 : }
46 : }
47 : }
|