STL 中的 std::string大小写转换 lowercase、uppercase、Trim、replace、split

来源:互联网 发布:斯芬克 知乎 编辑:程序博客网 时间:2024/06/06 10:47
#define ADD_VECTOR_END(v,i) (v).push_back((i))string lowerCase(string value) {return changeCase(value, true);}string upperCase(string value) {return changeCase(value, false);}void lTrim(string &value) {string::size_type i = 0;for (i = 0; i < value.length(); i++) {if (value[i] != ' ' &&value[i] != '\t' &&value[i] != '\n' &&value[i] != '\r')break;}value = value.substr(i);}void rTrim(string &value) {int32_t i = 0;for (i = (int32_t) value.length() - 1; i >= 0; i--) {if (value[i] != ' ' &&value[i] != '\t' &&value[i] != '\n' &&value[i] != '\r')break;}value = value.substr(0, i + 1);}void trim(string &value) {lTrim(value);rTrim(value);}string changeCase(string &value, bool lowerCase) {int32_t len = value.length();string newvalue(value);for (string::size_type i = 0, l = newvalue.length(); i < l; ++i)newvalue[i] = lowerCase ? tolower(newvalue[i]) : toupper(newvalue[i]);return newvalue;}void replace(string &target, string search, string replacement) {if (search == replacement)return;if (search == "")return;string::size_type i = string::npos;string::size_type lastPos = 0;while ((i = target.find(search, lastPos)) != string::npos) {target.replace(i, search.length(), replacement);lastPos = i + replacement.length();}}void split(string str, string separator, vector<string> &result) {result.clear();string::size_type position = str.find(separator);string::size_type lastPosition = 0;uint32_t separatorLength = separator.length();while (position != str.npos) {ADD_VECTOR_END(result, str.substr(lastPosition, position - lastPosition));lastPosition = position + separatorLength;position = str.find(separator, lastPosition);}ADD_VECTOR_END(result, str.substr(lastPosition, string::npos));}
0 0
原创粉丝点击