12.C++ string 操作

简介:
字符串初始化
void main() {
    string s1 = "111111";
    string s2("22222");
    string s3 = s2;
    cout << s1<< endl;
    cout << s2 << endl;
    cout << s3 << endl;
}
字符串遍历

使用[]和使用at()遍历的差别在于,at()发生数组越界会抛出异常,可以捕获,但是[]方式发生异常无法进行捕获

//通过角标取值
void main() {
    string  s1 = "abcdefg";
    for (int i = 0; i < s1.length(); i++){
        cout << s1[i];
    }
}

//通过at()取值
void main() {
    string  s1 = "abcdefg";
    for (int i = 0; i < s1.length(); i++){
        cout << s1.at(i);
    }
}

//使用迭代器遍历
void main() {
    string  s1 = "abcdefg";
    for (string::iterator i = s1.begin(); i != s1.end(); i++) {
        //迭代器可以看作指针
        cout << *i<< endl;
    }
}
string char的转换
void main(){
    string s1 = "aaabbbccc";
    // to char
    cout << s1.c_str()<<endl;
    char buf[128] = {0};
    s1.copy(buf, 9, 0);
    cout <<"buf="<< buf<< endl;
}
string链接
void main() {
    string s2 = "aaa";
    string s3 = "bbb";
    s2 = s2 + s3;
    cout << "s2 = "<<s2<< endl;

    string s4 = "222";
    string s5 = "444";
    s4.append(s5);
    cout << "s4="<<s4<< endl;
}
查找和替换
void main() {
    string s = "who are you and who is she and who am i";
        //从0开始查找
    int index = s.find("who", 0);
    while (index != string::npos) {
        cout << "index="<<index << endl;
        //替换,从0开始,替换三个字符
        s.replace(index, 3, "WHOSE");
        index = index + 1;
        index = s.find("who", index);
    }
    cout << "替换后:"<<s << endl;
}
删除字符
//找到指定字符,然后删除
void main() {
    string s1 = "hello1 hello2 hello3";
    string ::iterator it = find(s1.begin(), s1.end(), '1');
    if (it != s1.end()) {
        s1.erase(it);
    }
    cout << "删除之后:"<<s1<< endl;
    system("pause");
}

//删除指定范围的字符
void main() {
    string s1 = "hello1hello2hello3";
    s1.erase(1, 5);
    cout << "删除1到5位置的字符后:" << s1 << endl;
    system("pause");
}
插入字符
void main() {
    string s1 = "how are you today";
    s1.insert(0, "hello ");
    cout << "插入后:" << s1 << endl;
    system("pause");
}
大小写转换
void main() {
    string s1 = "how are you today";
    transform(s1.begin(), s1.end(), s1.begin(), toupper);
    cout << "转换后:" << s1 << endl;
    string s2 = "I AM GOOD";
    transform(s2.begin(), s2.end(), s2.begin(), tolower);
    cout << "转换后:" << s2 << endl;
    system("pause");
}
相关文章
|
24天前
|
C语言 C++ 容器
【c++丨STL】string模拟实现(附源码)
本文详细介绍了如何模拟实现C++ STL中的`string`类,包括其构造函数、拷贝构造、赋值重载、析构函数等基本功能,以及字符串的插入、删除、查找、比较等操作。文章还展示了如何实现输入输出流操作符,使自定义的`string`类能够方便地与`cin`和`cout`配合使用。通过这些实现,读者不仅能加深对`string`类的理解,还能提升对C++编程技巧的掌握。
51 5
|
24天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
38 2
|
2月前
|
C++ 容器
|
2月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
26 1
|
2月前
|
C++ 容器
|
2月前
|
C++ 容器
|
2月前
|
存储 C++ 容器
|
2月前
|
安全 C语言 C++
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析
46 4
|
2月前
|
存储 编译器 程序员
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
75 2
|
2月前
|
编译器 C语言 C++
【C++】C++ STL 探索:String的使用与理解(三)
【C++】C++ STL 探索:String的使用与理解