欢迎访问宙启技术站
智能推送

判断字符串首尾是否有空格的trim()函数

发布时间:2023-07-04 20:54:29

trim()函数用于除去字符串首尾的空格。下面是一个判断字符串首尾是否有空格的trim()函数,代码行数可能会超过1000字。

#include <iostream>
#include <string>

using namespace std;

bool hasLeadingTrailingSpace(const string& str) {
    string trimmedStr = str;

    // 除去字符串开头的空格
    int leadingSpaceCount = 0;
    while (trimmedStr[0] == ' ') {
        leadingSpaceCount++;
        trimmedStr = trimmedStr.substr(1);
    }

    // 除去字符串末尾的空格
    int trailingSpaceCount = 0;
    while (trimmedStr[trimmedStr.length() - 1] == ' ') {
        trailingSpaceCount++;
        trimmedStr = trimmedStr.substr(0, trimmedStr.length() - 1);
    }

    // 判断是否有空格
    if (leadingSpaceCount > 0 || trailingSpaceCount > 0) {
        cout << "原始字符串: " << str << endl;
        cout << "除去空格后的字符串: " << trimmedStr << endl;
        cout << "首部空格数量: " << leadingSpaceCount << endl;
        cout << "末尾空格数量: " << trailingSpaceCount << endl;

        return true;
    }

    return false;
}

int main() {
    string str1 = "   Hello World!";
    bool result1 = hasLeadingTrailingSpace(str1);
    cout << "有空格:" << (result1 ? "是" : "否") << endl;
    cout << endl;

    string str2 = "Hello World!   ";
    bool result2 = hasLeadingTrailingSpace(str2);
    cout << "有空格:" << (result2 ? "是" : "否") << endl;
    cout << endl;

    string str3 = "Hello World!";
    bool result3 = hasLeadingTrailingSpace(str3);
    cout << "有空格:" << (result3 ? "是" : "否") << endl;
    cout << endl;

    return 0;
}

上述代码先定义了一个名为hasLeadingTrailingSpace的函数,它接受一个const引用类型的string参数。函数内部首先将输入的字符串保存到一个名为trimmedStr的字符串中,然后通过循环和substr函数将开头和末尾的空格除去。除去过程中会记录开头空格的数量和末尾空格的数量。最后,根据开头和末尾空格的数量判断是否存在空格。如果存在空格,则输出原始字符串、除去空格后的字符串、开头空格的数量和末尾空格的数量,并返回true;否则,返回false。

在main函数中,分别测试了带有开头空格、带有末尾空格和不带空格的三种字符串,并输出相应的结果。

通过以上代码,我们可以判断一个字符串是否存在首尾空格。