1 #ifndef __JLANG__JSTRING__
2 #define __JLANG__JSTRING__
20 namespace JPP {
using namespace JLANG; }
49 explicit JString(
const std::string& buffer) :
70 explicit JString(
const char* buffer,
const std::string::size_type length) :
71 std::string(buffer, length)
93 template<
class ...Args>
94 JString(
const char* format,
const Args& ...args) :
127 istringstream
is(*
this);
129 ios_base::iostate state;
131 facet.
get(is, istreambuf_iterator<char>(), is, state, *
this);
146 return this->size() >= prefix.size() && this->substr(0, prefix.size()) == prefix;
158 return this->size() >= suffix.size() && this->substr(this->size() - suffix.size()) == suffix;
171 const char replacement,
172 const std::size_t max = std::numeric_limits<std::size_t>::max())
174 for (std::size_t i = this->find(target),
n = max; i != std::string::npos &&
n != 0; i = find(target,i), --
n) {
175 (*this)[i] = replacement;
191 const std::string& replacement,
192 const std::size_t max = std::numeric_limits<std::size_t>::max())
194 for (std::size_t i = this->find(target),
n = max; i != std::string::npos &&
n != 0; i = this->find(target,i), --
n) {
195 replace(this->begin() + i, this->begin() + i + target.length(), replacement);
213 const std::size_t max = std::numeric_limits<std::size_t>::max())
215 for (std::size_t i = this->find(target),
n = max; i != std::string::npos &&
n != 0; i = this->find(target,i), --
n) {
216 replace(this->begin() + i, this->begin() + i + target.length(),
JString(value));
274 for (
iterator i = begin(); i != end(); ++i) {
289 for (
iterator i = begin(); i != end(); ++i) {
305 std::ostringstream os;
323 std::ostringstream os;
343 std::istringstream
is(input);
363 istringstream
is(*
this);
371 this->
assign(istreambuf_iterator<char>(is),
372 istreambuf_iterator<char>());
389 istream::sentry sentry(in);
393 const locale&
loc = in.getloc();
395 if (has_facet<JStringFacet>(loc)) {
397 ios_base::iostate state;
399 use_facet<JStringFacet>(
loc).
get(in, istreambuf_iterator<char>(),
in, state, object);
401 if (state != ios_base::goodbit && state != ios_base::eofbit) {
407 in >>
static_cast<string&
>(object);
426 const locale&
loc = out.getloc();
428 if (has_facet<JStringFacet>(
loc)) {
430 use_facet<JStringFacet>(
loc).put(out, out, out.fill(), object);
434 out << static_cast<const string&>(object);
447 template<
class T,
class ...Args>
452 const size_t pos = this->find(
'%');
454 if (pos != string::npos) {
482 istream::sentry sentry(in,
true);
486 const locale&
loc = in.getloc();
488 if (has_facet<JStringFacet>(loc)) {
490 use_facet<JStringFacet>(
loc).
getline(in,
object);
494 getline(in, static_cast<string&>(
object));
JString(const std::string &buffer)
Constructor.
JString(const char *buffer, const std::string::size_type length)
Constructor.
void __set__() const
Termination method for formatting string.
static JString valueOf(const T &input)
Convert value to string.
JString trim(const std::string &target)
Trim string.
Wrapper class around STL string class.
TString replace(const TString &target, const TRegexp ®exp, const T &replacement)
Replace regular expression in input by given replacement.
JString & replace(const std::string &target, const std::string &replacement, const std::size_t max=std::numeric_limits< std::size_t >::max())
Replace character sequences.
static JString valueOf(const int input)
Convert enumeration type to string.
void __set__(const T &value, const Args &...args)
Recursive method for formatting string.
JString & toLower()
Convert all character to lower case.
friend std::istream & operator>>(std::istream &in, JString &object)
Read string from input stream.
static const T & toValue(const JString &input)
Convert string to value.
JString(const char c)
Constructor.
bool endsWith(const std::string &suffix) const
Test if this string ends with the specified suffix.
JString & compile(const JStringFacet &facet)
Compile token with given facet.
std::string trim(const std::string &buffer)
Trim string.
JString(const char *format, const Args &...args)
Constructor.
JString()
Default constructor.
JAssignSequence< typename JContainer_t::value_type > assign(JContainer_t &out)
Helper method to assign sequence of Comma Separated Values to output container.
friend std::ostream & operator<<(std::ostream &out, const JString &object)
Write string to output stream.
JString & trim()
Trim string.
bool startsWith(const std::string &prefix) const
Test if this string starts with the specified prefix.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
JString(const T &value)
Constructor.
JString & assign(T &output)
Assign (part of) string to value.
JString & toUpper()
Convert all character to upper case.
JString(const JString &buffer, const JStringFacet &facet)
Constructor.
JString & trim(const char c)
Trim string.
istreambuf_iterator get(const istreambuf_iterator __begin, const istreambuf_iterator __end, const std::ios_base &format, std::ios_base::iostate &result, std::string &buffer) const
Get string.
Facet class to specify parsing of a JLANG::JString object.
JString & replace(const char target, const char replacement, const std::size_t max=std::numeric_limits< std::size_t >::max())
Replace characters.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
JString & replace(const std::string &target, const T &value, const std::size_t max=std::numeric_limits< std::size_t >::max())
Replace character sequence.