42#if (defined(UNIX) || defined(CYGWIN)) && !defined(ANDROID)
50std::string
trim(
const std::string& s) {
51 if (s.length() == 0)
return s;
52 string::size_type b = s.find_first_not_of(
" \t\n");
53 string::size_type e = s.find_last_not_of(
" \t\n");
54 if (b == string::npos)
return "";
55 return std::string(s, b, e - b + 1);
59 if (s.length() == 0)
return s;
60 string::size_type b = s.find_first_not_of(
" \t\n");
61 string::size_type e = s.length() - 1;
62 if (b == string::npos)
return "";
63 return std::string(s, b, e - b + 1);
67 if (s.length() == 0)
return s;
68 string::size_type b = 0;
69 string::size_type e = s.find_last_not_of(
" \t\n");
70 if (e == string::npos)
return "";
71 return std::string(s, b, e - b + 1);
76 ret.reserve(s.size());
77 std::transform(s.begin(), s.end(), back_inserter(ret),
78 [](
unsigned char c) {
return std::tolower(c); });
84 ret.reserve(s.size());
85 std::transform(s.begin(), s.end(), back_inserter(ret),
86 [](
unsigned char c) {
return std::toupper(c); });
93 va_start(arg_list, fmt);
94 int numChar = vasprintf(&auxPtr, fmt, arg_list);
109 va_start(arg_list, fmt);
110 int numChars = vasprintf(&auxPtr, fmt, arg_list);
118#if (defined(UNIX) || defined(CYGWIN)) && !defined(ANDROID)
119 string result = filename;
122 wordexp(filename.c_str(), &p, 0);
123 if (p.we_wordc > 0) {
124 result = p.we_wordv[0];
131 return std::string();
135std::vector<std::string>
strSplit(
const std::string& str,
136 const std::string& delimiters) {
137 std::vector<std::string> tokens;
138 if (str.empty())
return tokens;
139 string::size_type lastPos = 0;
140 string::size_type pos = 0;
143 pos = str.find_first_of(delimiters, lastPos);
144 tokens.push_back(str.substr(lastPos, pos - lastPos));
146 }
while (string::npos != pos);
152 if (s.size() < start.size())
return false;
153 return equal(start.begin(), start.end(), s.begin());
157 if (s.size() < end.size())
return false;
158 return equal(end.rbegin(), end.rend(), s.rbegin());
161int readLine(std::istream& is, std::stringstream& currentLine) {
162 if (is.eof())
return -1;
165 is.get(*currentLine.rdbuf());
169 if (currentLine.str().empty() && is.eof()) {
172 return static_cast<int>(currentLine.str().size());
177 while (c !=
'\n' && is.good() && !is.eof()) is.get(c);
#define __PRETTY_FUNCTION__
void skipLine(std::istream &is)
std::string strToLower(const std::string &s)
int strPrintf(std::string &str, const char *fmt,...)
std::string strExpandFilename(const std::string &filename)
std::string trimRight(const std::string &s)
std::string trim(const std::string &s)
std::string trimLeft(const std::string &s)
int readLine(std::istream &is, std::stringstream ¤tLine)
bool strEndsWith(const std::string &s, const std::string &end)
std::vector< std::string > strSplit(const std::string &str, const std::string &delimiters)
bool strStartsWith(const std::string &s, const std::string &start)
std::string formatString(const char *fmt,...)
std::string strToUpper(const std::string &s)