36 contains(std::string
const &s,
37 std::string
const &infix)
39 return s.find(infix) != std::string::npos;
43 contains(std::string
const &s,
46 return s.find(infix) != std::string::npos;
50 starts_with(std::string
const &s,
51 std::string
const &prefix)
53 return (s.size() >= prefix.size()) &&
54 (0 == s.compare(0, prefix.size(), prefix));
58 starts_with(std::string
const &s,
66 ends_with(std::string
const &s,
69 return (s.size() >= suffix.size()) &&
70 (0 == s.compare(s.size() - suffix.size(), suffix.size(),
suffix));
74 ends_with(std::string
const &s,
77 return !s.empty() && s.back() ==
suffix;
81 replace_first(std::string s,
82 std::string
const& target,
83 std::string
const& replacement)
85 std::string::size_type pos = s.find(target);
86 if( pos == std::string::npos )
88 s.replace(pos, target.size(), replacement);
95 replace_last(std::string s,
96 std::string
const& target,
97 std::string
const& replacement)
99 std::string::size_type pos = s.rfind(target);
100 if( pos == std::string::npos )
102 s.replace(pos, target.size(), replacement);
109 replace_all_nonrecursively(std::string s,
110 std::string
const& target,
111 std::string
const& replacement)
113 std::string::size_type pos = 0;
114 auto tsize = target.size();
115 auto rsize = replacement.size();
118 pos = s.find(target, pos);
119 if (pos == std::string::npos)
121 s.replace(pos, tsize, replacement);
129 replace_all(std::string s,
130 std::string
const& target,
131 std::string
const& replacement)
133 std::string::size_type pos = 0;
134 auto tsize = target.size();
136 auto rsize = replacement.size();
139 pos = s.find(target, pos);
140 if (pos == std::string::npos)
142 s.replace(pos, tsize, replacement);
147 pos += rsize - std::min(tsize - 1, rsize);
153 inline std::vector< std::string >
154 split(std::string
const &s,
155 std::string
const &delimiter,
156 bool includeDelimiter =
false)
158 std::vector< std::string > ret;
159 std::string::size_type pos, lastPos = 0, length = s.size();
160 while( lastPos < length + 1 )
162 pos = s.find_first_of(delimiter, lastPos);
163 if( pos == std::string::npos )
166 includeDelimiter =
false;
170 ret.push_back(s.substr(lastPos, pos + (includeDelimiter ? delimiter.size() : 0) - lastPos));
179 strip(std::string s, std::vector< char > to_remove)
181 for(
auto const& c : to_remove )
182 s.erase(std::remove(s.begin(), s.end(), c), s.end());
189 join(std::vector< std::string >
const& vs, std::string
const& delimiter)
198 std::ostringstream ss;
199 std::copy(vs.begin(),
201 std::ostream_iterator< std::string >(ss, delimiter.c_str()));
202 ss << *(vs.end() - 1);
214 removeSlashes( std::string s )
216 if( auxiliary::starts_with(
221 s = auxiliary::replace_first(
227 if( auxiliary::ends_with(
232 s = auxiliary::replace_last(
std::string suffix(Format f)
Determine the default filename suffix for a given storage format.
Definition: Format.cpp:65
Public definitions of openPMD-api.
Definition: Date.cpp:28