链接:https://www.zhihu.com/question/35967887/answer/125238385
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
std::vector<std::string> split(const std::string &s, const std::string &d)
{
std::vector<std::string> v;
char *str = new char[s.size()+1];
strcpy(str, s.c_str());
while (char *t = strsep(&str, d.c_str()))
v.push_back(t);
delete[] str;
return v;
}
std::string <rim(std::string &s)
{
if (s.empty()) return s;
std::string::const_iterator iter = s.begin();
while (iter != s.end() && isspace(*iter++));
s.erase(s.begin(), --iter);
return s;
}
std::string &rtrim(std::string &s)
{
if (s.empty()) return s;
std::string::const_iterator iter = s.end();
while (iter != s.begin() && isspace(*--iter));
s.erase(++iter, s.end());
return s;
}
std::string &trim(std::string &s)
{
ltrim(s);
rtrim(s);
return s;
}
bool startsWith(const std::string &str, const std::string &prefix)
{
return prefix.size() <= str.size() &&
std::equal(prefix.cbegin(), prefix.cend(), str.cbegin());
}
bool endsWith(const std::string &str, const std::string &suffix)
{
return suffix.size() <= str.size() &&
std::equal(suffix.crbegin(), suffix.crend(), str.crbegin());
}
std::string::size_type indexOf(const std::string &str, const std::string &substr)
{
return str.find(substr);
}
std::string toUpper(const std::string &str)
{
std::string upper(str.size(), '\0');
std::transform(str.cbegin(), str.cend(), upper.begin(), ::toupper);
return upper;
}
std::string toLower(const std::string &str)
{
std::string lower(str.size(), '\0');
std::transform(str.cbegin(), str.cend(), lower.begin(), ::tolower);
return lower;
}
std::string format(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
int len = vsnprintf(nullptr, 0, fmt, ap);
va_end(ap);
std::string buf(len+1, '\0');
va_start(ap, fmt);
vsnprintf(&buf[0], buf.size(), fmt, ap);
va_end(ap);
buf.pop_back();
return buf;
}
#define log(fmt, ...) (std::cout << format(fmt, ##__VA_ARGS__) << '\n')
留言
張貼留言