首页 > 编程语言 > 详细

c++中的string类

时间:2020-09-03 17:32:16      阅读:65      评论:0      收藏:0      [点我收藏+]

本文主要记录c++中string类的常用的方法。

一、string的初始化

#include <iostream>
#include <string>
using namespace std;

int main()
{
    //初始化
    string str1;//,调用默认构造函数,初始化成空字符串
    str1 = "test string";
    cout << "str1=" << str1 << endl;

    string str2(str1);//拷贝构造函数,利用str1来初始化str2
    cout << "str2=" << str2 << endl;

    string str3(str1,5);//将字符串str1,从0开始第n个字符开始至结束的内容初始化成str3
    cout << "str3=" << str3 << endl;

    string str4(str1, 5, 2);//将字符串str1从第5个开始截取2个字节内容初始化成str4
    cout << "str4=" << str4 << endl;

    string str5("hello");//将c语言字符串初始化成str5
    cout << "str5=" << str5 << endl;

    string str6("hello",2);//将c语言字符串前2个字节初始化成str6
    cout << "str6=" << str6 << endl;

    string str7(10,a);//初始化一个字符串,内容是10个字符a
    cout << "str7=" << str7 << endl;

}

输出:

str1=test string
str2=test string
str3=string
str4=st
str5=hello
str6=he
str7=aaaaaaaaaa

二、常用的方法实验

#include <iostream>
#include <string>
using namespace std;

int main()
{
    //初始化
    //string str1;//,调用默认构造函数,初始化成空字符串
    //str1 = "test string";
    //cout << "str1=" << str1 << endl;

    //string str2(str1);//拷贝构造函数,利用str1来初始化str2
    //cout << "str2=" << str2 << endl;

    //string str3(str1,5);//将字符串str1,从0开始第n个字符开始至结束的内容初始化成str3
    //cout << "str3=" << str3 << endl;

    //string str4(str1, 5, 2);//将字符串str1从第5个开始截取2个字节内容初始化成str4
    //cout << "str4=" << str4 << endl;

    //string str5("hello");//将c语言字符串初始化成str5
    //cout << "str5=" << str5 << endl;

    //string str6("hello",2);//将c语言字符串前2个字节初始化成str6
    //cout << "str6=" << str6 << endl;

    //string str7(10,‘a‘);//初始化一个字符串,内容是10个字符a
    //cout << "str7=" << str7 << endl;

    //常用操作
    //1.获取字符串的长度,可以使用size()和length()函数求字符串的长度
    string s1 = "test string";
    cout << "s1的长度为:" << s1.length() << endl;
    //输出:s1的长度为:11
    cout << "s1的长度为:" << s1.size() << endl;
    //输出:s1的长度为:11

    //2.字符串的拼接、重载加法运算符
    string s2 = "test ";
    string s3 = "string";
    string s4 = s2 + s3;
    cout << "s2=" << s2 << endl;
    cout << "s3=" << s3 << endl;
    cout << "s2+s3=" << s4 << endl;
    //输出:s2 = test
    //输出:s3 = string
    //输出:s2 + s3 = test string

    //3.字符串的比较 重载 == != < >
    string s5 = "test";
    string s6 = "test string";
    string s7 = "test";
    if (s5 == s7)
    {
        cout << "s5 == s7" << endl;
    }
    if (s5 != s6)
    {
        cout << "s5 != s6" << endl;
    }
    if (s5 < s6)
    {
        cout << "s5 < s6" << endl;
    }
    if (s6 > s5)
    {
        cout << "s6 > s5" << endl;
    }
    //输出:
    //s5 == s7
    //s5 != s6
    //s5 < s6
    //s6 > s5

    //4.获取字符串头部字符和尾部字符 begin()方法和end()方法,返回的是一个迭代器
    //begin()方法返回的是一个指向string头部字符的迭代器。
    //end()方法返回的是一个指向string尾部字符的末端,指向的是一个空元素
    string s8 = "test string";
    string::const_iterator iter1 = s8.begin();//定义一个迭代器接收begin()方法的返回值
    string::const_iterator iter2 = s8.end();//定义一个迭代器接收end()方法的返回值
    cout << *iter1 << endl;
    cout << *(--iter2) << endl;//iter2指向最后一个字符下一个位置,因此--iter2得到最后一个字符
    //输出:
    //t
    //g

    //5.字符串倒置 reverse()
    string s9 = "test string";
    cout << s9 << endl;
    reverse(s9.begin(),s9.end());
    cout << s9 << endl;
    //输出:
    //test string
    //gnirts tset

    //6.兼容c字符串的函数c_str(),data(),以数组形式返回string内容
    string s10 = "test string";
    const char *ptr = s10.c_str();
    //char *ptr1 = s10.c_str();报错,因为c_str()返回的是const char *类型的
    cout << "ptr=" << ptr << endl;
    cout << "s10-length:"<<s10.length() << endl;
    cout << "ptr-length:"<<strlen(ptr) << endl;
    //输出:
    //ptr=test string
    //s10 - length:11
    //ptr - length : 11
    //如果想要用char*的方式接收,可以进行拷贝的方式
    char ptr2[64] = { 0 };
    strncpy_s(ptr2, s10.c_str(), s10.length());
    cout << "ptr2=" << ptr2 << endl;
    //输出:
    //ptr2=test string
    const char *ptr3 = data(s10);
    cout << "ptr3=" << ptr3 << endl;
    //输出:
    //ptr3=test string

    //7.子串匹配
    cout << "子串匹配:" << endl;
    string s11 = "test string";
    cout << s11.find(e) << endl;//从头开始查找字符‘e‘,找到一个后直接返回下标
    cout << s11.find(t, 5) << endl;//从下表5开始,查按照字符‘t‘,找到返回下表。
    cout << s11.find(o, 5) << endl;//如果不存在,返回4294967295 (-1)
    //输出:
    //1
    //6
    //4294967295
    cout << s11.find("est") << endl;
    cout << s11.find("string") << endl;//子串查找
    //输出
    //1
    //5
    cout << "从后往前匹配" << endl;//从最后往前找
    cout << s11.rfind(tr) << endl;//从后往前找,10是指定下标
    cout << s11.rfind(tr, 10);//从后往前找,10是指定下标
    //输出
    //7
    //7

}

 

c++中的string类

原文:https://www.cnblogs.com/cycit/p/13608463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!