容器string : 构造、赋值、拼接、查找、替换

发布时间:2024年01月19日

头文件:

#include <string>
1、构造、赋值
/*
构造:
1、string () : 创建一个空字符串
2、string (const char * s ) : 字符串s初始化
3、string (const string & str ) : 使用string初始化另一个string
4、string (int n, char c ) :使用n个字符c初始化
*/

//P190 赋值
// 方法一:直接赋值
// 方法二:assign
void test1 ()
{
    // 使用assign 进行赋值
    string str1;
    str1.assign ("张三");
    cout << "str1 = " << str1 << endl;

    // assign (const char * s, int n);
    // 字符串的前 n 个字符进行赋值
    string str2;
    str2.assign ("1234567890", 4);
    cout << "str2 = " << str2 << endl;

    // assign (另外一个字符串)
    string str3;
    str3.assign (str2);
    cout << "str3 = " << str3 << endl;

    // assign (int n, char ch);
    // 使用n个字符ch 填充
    string str4;
    str4.assign (10, 'W');
    cout << "str4 = " << str4 << endl;
}

// P191 拼接
// 方法一: +=
// 方法二: append
void test2 ()
{
    string str1 = "e";
    str1 += "sdfs";
    cout << "str1 = " << str1 << endl;

    // append (const char * s)
    str1.append("asfnjdk");
    cout << "str1 = " << str1 << endl;

    // append (const char * s, int n)
    str1.append ("dhsg", 1);
    cout << "str1 = " << str1 << endl;
    string str2 = "sjgushuha";
    str1.append (str2, 0, 3); // 方法一
    // 格式字符串二, 从0位置开始, 截取三个字符个数
    // str1.append(str2.substr(0, 3)); // 方法二
    // error:str1.append (str2, 3);
    cout << "str1 = " << str1 << endl;

    // 再举一个例子
    str1.append (str2, 4, 3);
    cout << "str1 = " << str1 << endl;
}
2、查找、替换

// 查找
void test3 ()
{
    // 找到返回初始位置, 否则返回-1
    string str1 = "asdfgfhghfgjg";
    int pos = str1.find ("fg"); // 从左往右
    cout << "pos = " << pos << endl;

    pos = str1.rfind ("fg"); // 从右往左
    cout << "pos = " << pos << endl;
}

// 替换
void test4 ()
{
    // 将所有字符串全部替换
    string str1 = "asdfgfhghfgjg";
    str1.replace (1, 3, "1111");
    cout << "str1 = " << str1 << endl;
}
3、字符串比较

// 比较
void test5 ()
{
    string str1 = "dsgh";
    string str2 = "dsuhu";

    cout << str1.compare (str2) << endl;
}
4、存取
// 单个字符存取
void test6 ()
{
    string str1 = "dsgh";

    // 1、通过[]访问单个字符
    for (int i = 0; i < str1.size (); i++)
        cout << str1[i] << "  ";

    cout << endl;

    // 2、通过at方式访问单个字符
    for (int i = 0; i < str1.size (); i++)
        cout << str1.at(i) << "  ";
    cout << endl;

    // 修改
    str1[0] = '2';
    cout << "str1 = " << str1 << endl;
    str1.at(2) = '3';
    cout << "str1 = " << str1 << endl;
}
5、插入、删除

// 插入删除
void test7 ()
{
    string str1 = "dsgh";

    // 插入
    str1.insert (1, "111");
    cout << "str1 = " << str1 << endl;

    // 删除
    str1.erase (1, 3);
    cout << "str1 = " << str1 << endl;
}
6、子串获取
// 子串获取
void test8 ()
{
    string str1 = "dsgh";
    string subStr = str1.substr(1, 3);
    cout << "subStr = " << subStr << endl;

    string str2 = "hysyu bshdfb";
    int pos = str2.find ("d");

    subStr = str2.substr(0, pos);
    cout << "subStr = " << subStr << endl;

}

文章来源:https://blog.csdn.net/2301_76327397/article/details/135698438
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。