美文网首页程序员
STL 中的 std::string大小写转换 lowercas

STL 中的 std::string大小写转换 lowercas

作者: 何景根 | 来源:发表于2020-11-23 11:44 被阅读0次

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

#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));
}

相关文章

网友评论

    本文标题:STL 中的 std::string大小写转换 lowercas

    本文链接:https://www.haomeiwen.com/subject/lpimiktx.html