39 #include <boost/algorithm/string.hpp>
74 void StringAppendV(std::string* dst,
const char*
format, va_list ap) {
76 static const int kFixedBufferSize = 1024;
77 char fixed_buffer[kFixedBufferSize];
83 va_copy(backup_ap, ap);
84 int result = vsnprintf(fixed_buffer, kFixedBufferSize,
format, backup_ap);
87 if (
result < kFixedBufferSize) {
90 dst->append(fixed_buffer,
result);
97 va_copy(backup_ap, ap);
110 const int variable_buffer_size =
result + 1;
111 std::unique_ptr<char[]> variable_buffer(
new char[variable_buffer_size]);
114 va_copy(backup_ap, ap);
116 vsnprintf(variable_buffer.get(), variable_buffer_size,
format, backup_ap);
120 dst->append(variable_buffer.get(),
result);
124 bool IsNotWhiteSpace(
const int character) {
140 std::string
StringReplace(
const std::string& str,
const std::string& old_str,
141 const std::string& new_str) {
142 if (old_str.empty()) {
146 std::string mod_str = str;
148 mod_str.replace(
position, old_str.size(), new_str);
158 std::size_t found = str.rfind(key);
159 if (found != std::string::npos) {
160 return str.substr(found + key.length(),
161 str.length() - (found + key.length()));
167 const std::string& delim) {
168 std::vector<std::string> elems;
169 boost::split(elems, str, boost::is_any_of(delim), boost::token_compress_on);
174 return !prefix.empty() && prefix.size() <= str.size() &&
175 str.substr(0, prefix.size()) == prefix;
179 str->erase(str->begin(),
180 std::find_if(str->begin(), str->end(), IsNotWhiteSpace));
184 str->erase(std::find_if(str->rbegin(), str->rend(), IsNotWhiteSpace).base(),
194 std::transform(str->begin(), str->end(), str->begin(), ::tolower);
198 std::transform(str->begin(), str->end(), str->begin(), ::toupper);
202 return str.find(sub_str) != std::string::npos;
filament::Texture::InternalFormat format
QString character(int index)
std::string StringGetAfter(const std::string &str, const std::string &key)
void StringTrim(std::string *str)
bool StringStartsWith(const std::string &str, const std::string &prefix)
std::string StringReplace(const std::string &str, const std::string &old_str, const std::string &new_str)
void StringToLower(std::string *str)
void StringLeftTrim(std::string *str)
void StringRightTrim(std::string *str)
std::vector< std::string > StringSplit(const std::string &str, const std::string &delim)
std::string StringPrintf(const char *format,...)
void StringToUpper(std::string *str)
bool StringContains(const std::string &str, const std::string &sub_str)