C++ STL string类型

    xiaoxiao2021-03-25  103

    要想使用标准C++中string类,必须要包含

    #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件

    using namespace std;

    1:string对象的定义和初始化以及读写

    string s1;      默认构造函数,s1为空串

    string s2(s1);   将s2初始化为s1的一个副本

    string s3("hello");   将s3初始化一个字符串面值副本

    string s4(n,'c');   将s4 初始化为字符'c'的n个副本

    cin>>s5;  读取有效字符直到遇到空格

    getline(cin,s6);  读取字符到遇到换行,空格可读入,直到‘\n’结束

    getline(cin,s7,'a'); 一直到‘a’结束,其中任何字符包括'\n'都能够读入

    #include<iostream> using namespace std; //getline(cin,str);处理后还留有结束符在输入流中,故需要使用cin.get(); //接受最后一个结束符,才能接受后面得输入值。 int main() { string s1,s2("hello"),s3(10,'c'),s4,s5,s6; cin>>s4; cin.get(); getline(cin,s5); cin.get(); getline(cin,s6,'a'); cout<<s1<<endl; cout<<s2<<endl; cout<<s3<<endl; cout<<s4<<endl; cout<<s5<<endl; cout<<s6<<endl; }

    2:string对象操作

    s.empty()  判断是否为空,bool型

    s.size() 或 s.length() 返回字符的个数

    s[n]  返回位置为n的字符,从0开始计数

    s1+s2 连接,看下面例子:

        可用此方法给字符串后面添加字符如:s=s+'a'; 

        a:  string s2=s1+", ";  //对,把一个string对象和一个字符面值连接起来是允许的

        b:  string s4="hello "+", ";   //错,不能将两个字符串面值相加

        c:  string s5=s1+", "+"world";   //对,前面两个相加相当于一个string对象;

        d:  string s6="hello" + ", " +  s2;  //错

    (注:字符串尾部追加还可用s.append("abc")函数添加)

    s1=s2  替换

    s1==s2  相等,返回true或false

    !=,<,<=,>,>=  字符串比较,两个字符串短的与长的前面匹配,短的小于长的

    string s7("hello world!"),s8("dear"); cout<<s7<<endl<<s8<<endl; cout<<s7.empty()<<endl;//空返回1 cout<<s7.size()<<endl;//不包括'\0' cout<<s7[0]<<endl; cout<<s7<<endl; cout<<(s7==s8)<<endl; cout<<s7+s8<<endl;

    k = s.find(s1);  //s1为string类型,k为int类型,表示下标

    s.erase(k,s1.size()); //从k处删除长度为s1.size()的元素 及删除s1

    s.insert(k,s2); //在k处插入s2

    string s13,s14,s15; s13 = "hello "; s14 = "world"; s15 = s13+s14; cout<<s13<<endl<<s14<<endl<<s15<<endl; int k = s15.find("world"); s15.erase(k,sizeof("world")-1); s15.insert(k,"James"); cout<<s15;

    转载请注明原文地址: https://ju.6miu.com/read-6480.html

    最新回复(0)