字符串

学习一下C++的基本函数和操作

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    cout << a;
    return 0;
}

操作符:[]

通过这个操作符可以使用索引的方式来访问字符串中的每一个字符

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    cout << a[0];
    return 0;
}

访问第一个字符和最后一个字符

通过front()和back()函数来访问字符串的一个字符和最后一个字符

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    cout << a.front();
    cout << "\n";
    cout << a.back();
    return 0;
}

迭代器

有正向的迭代器和逆向的迭代器

正向迭代器

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it<<" ";
    }
    return 0;
}

逆向迭代器

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    for(auto it = a.rbegin(); it != a.rend(); it++) {
        cout << *it<<" ";
    }
    return 0;
}

使用逆向迭代器的输出是

v u n i T

长度或空间

通过size()函数和length()函数来获得字符串有多少字符,使用empty()函数来判断字符串是否为空

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    cout << a.size() << "\n";
    cout << a.length() << "\n";
    cout << a.empty() << "\n";
    for(auto it = a.rbegin(); it != a.rend(); it++) {
        cout << *it << " ";
    }
    return 0;
}

针对字符串的操作

清空字符串

使用clear()函数清空字符串

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.clear();
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

插入一个字符

如果猜得不错,在插入之前要获得一个迭代器,猜错了,只需要提供一个索引就行了

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.insert(3,"k");
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

删除一个字符

删除的话需要一个迭代器,要注意,迭代器只能加一或减一,不能加一个大于一的数

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.erase(a.begin());
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

push_back()和pop_back()

push_back()函数在最后一个位置填充一个字符,pop_back()从最后一个位置弹出一个字符

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.push_back('a');
    a.pop_back();
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

向后面追加字符串

使用append()函数向后面追加字符串,这个方法和push_back()方法的区别就是push_back()只追加一个字符,而append()可以追加字符串,也可以使用+=操作符

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.append(" loves");
    a += " somebody";
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

判断前缀和后缀(这两个是C++20才有的方法,较早版本无次方法)

使用start_with()和end_with()来判断前缀和后缀

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.append(" loves");
    a += " somebody";
    cout << a.starts_with("Tinuv") << "\n";
    cout << a.ends_with("somebody") << "\n";
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

替换

使用索引即可,第一个参数是开始位置,第二个参数是替换的个数,第三个参数是要提换的字符

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.append(" loves");
    a += " somebody";
    a.replace(0, 5, "dh");
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

求子串

#include <iostream>
#include <string>

using namespace std;

int main() {
    string a = "Tinuv";
    a.append(" loves");
    a += " somebody";
    string sub = a.substr(0, 5);
    cout << sub << "\n";
    for(auto it = a.begin(); it != a.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

🌹💗正文结束💗🌹