Version: SMASH-3.0
stringfunctions.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2014-2018,2020,2022
4  * SMASH Team
5  *
6  * GNU General Public License (GPLv3 or later)
7  *
8  */
9 
10 #ifndef SRC_INCLUDE_SMASH_STRINGFUNCTIONS_H_
11 #define SRC_INCLUDE_SMASH_STRINGFUNCTIONS_H_
12 
13 #include <string>
14 #include <vector>
15 
16 namespace smash {
17 
24 std::string trim(const std::string &s);
25 
32 void remove_substr(std::string &s, const std::string &p);
33 
39 void isoclean(std::string &s);
40 
48 std::vector<std::string> split(const std::string &s, char delim);
49 
57 std::string join(const std::vector<std::string> &v, const std::string &delim);
58 
67 std::string quote(const std::string &s);
68 
69 namespace utf8 {
78 std::string fill_left(const std::string &s, size_t width, char fill = ' ');
79 
88 std::string fill_right(const std::string &s, size_t width, char fill = ' ');
89 
98 std::string fill_both(const std::string &s, size_t width, char fill = ' ');
99 
108 template <typename octet_type>
109 inline uint8_t mask8(octet_type oc) {
110  return static_cast<uint8_t>(0xff & oc);
111 }
112 
120 template <typename octet_iterator>
121 inline typename std::iterator_traits<octet_iterator>::difference_type
122 sequence_length(octet_iterator lead_it) {
123  uint8_t lead = mask8(*lead_it);
124  if (lead < 0x80)
125  return 1;
126  else if ((lead >> 5) == 0x6)
127  return 2;
128  else if ((lead >> 4) == 0xe)
129  return 3;
130  else if ((lead >> 3) == 0x1e)
131  return 4;
132  else
133  return 0;
134 }
135 
136 } // namespace utf8
137 
138 } // namespace smash
139 
140 #endif // SRC_INCLUDE_SMASH_STRINGFUNCTIONS_H_
constexpr int p
Proton.
std::iterator_traits< octet_iterator >::difference_type sequence_length(octet_iterator lead_it)
Given an iterator to the beginning of a UTF-8 sequence, return the length of the next UTF-8 code poin...
std::string fill_right(const std::string &s, size_t width, char fill=' ')
Fill string with characters to the right until the given width is reached.
std::string fill_both(const std::string &s, size_t width, char fill=' ')
Fill string with characters at both sides until the given width is reached.
uint8_t mask8(octet_type oc)
Extract the first byte from a given value.
std::string fill_left(const std::string &s, size_t width, char fill=' ')
Fill string with characters to the left until the given width is reached.
Definition: action.h:24
std::vector< std::string > split(const std::string &s, char delim)
Split string by delimiter.
std::string quote(const std::string &s)
Add quotes around string.
std::string trim(const std::string &s)
Strip leading and trailing whitespaces.
std::string join(const std::vector< std::string > &v, const std::string &delim)
Join strings using delimiter.
void isoclean(std::string &s)
Remove ⁺, ⁻, ⁰ from string.
void remove_substr(std::string &s, const std::string &p)
Remove all instances of a substring p in a string s.