Keyple Util C++ Library 2.0.0
Reference Terminal Reader API for C++
StringBuilder.h
Go to the documentation of this file.
1/**************************************************************************************************
2 * Copyright (c) 2021 Calypso Networks Association https://calypsonet.org/ *
3 * *
4 * See the NOTICE file(s) distributed with this work for additional information regarding *
5 * copyright ownership. *
6 * *
7 * This program and the accompanying materials are made available under the terms of the Eclipse *
8 * Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0 *
9 * *
10 * SPDX-License-Identifier: EPL-2.0 *
11 **************************************************************************************************/
12
13#pragma once
14
15#include <string>
16#include <sstream>
17
18namespace keyple {
19namespace core {
20namespace util {
21namespace cpp {
22
24private:
25 std::string privateString;
26
27public:
29
30 explicit StringBuilder(const std::string& initialString) : privateString(initialString) {}
31
32 explicit StringBuilder(std::size_t capacity)
33 {
35 }
36
37 char charAt(std::size_t index)
38 {
39 return privateString[index];
40 }
41
42 StringBuilder* append(const std::string& toAppend)
43 {
44 privateString += toAppend;
45 return this;
46 }
47
48 template <typename T> StringBuilder* append(const T& toAppend)
49 {
50 privateString += toString(toAppend);
51 return this;
52 }
53
54 StringBuilder* insert(std::size_t position, const std::string& toInsert)
55 {
56 privateString.insert(position, toInsert);
57 return this;
58 }
59
60 template <typename T>
61 StringBuilder* insert(std::size_t position, const T& toInsert)
62 {
63 privateString.insert(position, toString(toInsert));
64 return this;
65 }
66
67 std::string toString()
68 {
69 return privateString;
70 }
71
72 std::size_t length()
73 {
74 return privateString.length();
75 }
76
77 void setLength(std::size_t newLength)
78 {
79 privateString.resize(newLength);
80 }
81
82 std::size_t capacity()
83 {
84 return privateString.capacity();
85 }
86
87 void ensureCapacity(std::size_t minimumCapacity)
88 {
89 privateString.reserve(minimumCapacity);
90 }
91
92 StringBuilder* remove(std::size_t start, std::size_t end)
93 {
94 privateString.erase(start, end - start);
95 return this;
96 }
97
98 StringBuilder* replace(std::size_t start, std::size_t end,
99 const std::string& newString)
100 {
101 privateString.replace(start, end - start, newString);
102 return this;
103 }
104
105private:
106 template <typename T> static std::string toString(const T& subject)
107 {
108 std::ostringstream ss;
109 ss << subject;
110 return ss.str();
111 }
112};
113
114}
115}
116}
117}
void setLength(std::size_t newLength)
Definition: StringBuilder.h:77
StringBuilder * append(const std::string &toAppend)
Definition: StringBuilder.h:42
StringBuilder * replace(std::size_t start, std::size_t end, const std::string &newString)
Definition: StringBuilder.h:98
StringBuilder(const std::string &initialString)
Definition: StringBuilder.h:30
StringBuilder * insert(std::size_t position, const std::string &toInsert)
Definition: StringBuilder.h:54
StringBuilder * remove(std::size_t start, std::size_t end)
Definition: StringBuilder.h:92
StringBuilder * insert(std::size_t position, const T &toInsert)
Definition: StringBuilder.h:61
StringBuilder * append(const T &toAppend)
Definition: StringBuilder.h:48
void ensureCapacity(std::size_t minimumCapacity)
Definition: StringBuilder.h:87