C++ string string string string string string string string string string

一、 初始化

    string s1="i love you";
    string s2(s1);  //把s2初始化为string s1,注意不能写成string s2; s2(s1);
    string s3("value");  //将s3初始化一个c类型的字符串
    string s4(6,'s');   //将s4初始化为6个字符‘s'
    /*注意字符串面值与标准库string不是同一个类型*/
    cout<<s1<<endl;
    cout<<s2<<endl;
    cout<<s3<<endl;
    cout<<s4<<endl;

二、输入

    string s6;
    getline(cin,s6);//输入带有空格的字符串,测试“ hello world ”
    cout<<s6<<endl;
  cout<<"------------------------------"<<endl;
string s5; cin>>s5;//输入不带空格的字符串 “ hello world ”测试,发现只读取有效字符到遇到空格结束 cout<<s5<<endl; //故意把s5和s6倒过来,如果先用cin输入s5,再用getline(cin,s6)会有问题。

 三、访问字符

    cout<<s1.at(13)<<endl;//at函数提供范围检查,当越界时会抛出out_of_range异常,
    cout<<s1[13]<<endl;//下标运算符[]不提供检查访问。

四、特性描述

1.判断是否为空

s1.empty()

2.长度

  string s1="12345678";
  cout
<<s1.length()<<endl;//.length()和.size()没区别,用哪个都行
  cout<<s1.size()<<endl;//size()代表它是个容器,length()体现它是字符串

3.重新定义它的长度(多去少补)

    string s1="12345678";
    cout<<s1<<endl;
    cout<<s1.size()<<endl;//.length()和.size()没区别,用哪个都行
    s1.resize(4);//多去
    cout<<s1<<endl;
    cout<<s1.size()<<endl;
    s1.resize(6,'x');//少补,不写第二个参数也可以
    cout<<s1<<endl;
    cout<<s1.size()<<endl;

 

五、赋值

    string s1="12345678";
    string s3="1234567";
    char s2[10]="12345";
    cout<<s1<<endl;
    s1="aaa";
    cout<<s1<<endl;
    s1.assign(s3);//assign里可以是c类型的字符串,也可以是string字符串
    cout<<s1<<endl;
    s1.assign(s2,3);//前n个字符赋值,这种第一个参数只能是c类型的字符串
    cout<<s1<<endl;
    s1.assign(3,'c');//n个字符赋给当前字符串
    cout<<s1<<endl;
    s1.assign(s3,2,3);//把字符串(可以是c类型的也可以是string)中从start开始的n个字符赋给当前字符串
    cout<<s1<<endl;

六、连接

    string s1="12345678";
    string s3="1234567";
    char s2[10]="12345";
    cout<<s1<<endl;
    s1+=s3;
    cout<<s1<<endl;
    s1.append("bb");//里面可以是c类型的字符串,也可以是string
    cout<<s1<<endl;
    s1.append(s3,2,3);//把字符串s3中从2的3个字符连接到当前字符串的结尾,也可以是c类型的字符串
    cout<<s1<<endl;
    s1.append(3,'c');//把n个字符连接到当前字符串后
    cout<<s1<<endl;
    s1="aaa",s3="bbb";
    string s4=s1+s3;
    cout<<s4<<endl;

六、比较

  string s1="aaa";
    string s2="aaa";
    string s3="bbb";
    if(s1==s2)
        cout<<"相等"<<endl;
    else
        cout<<"不相等"<<endl;
    if(s1==s3)
        cout<<"相等"<<endl;
    else
        cout<<"不相等"<<endl;
    //另外,运算符">","<",">=","<=","!="均被重载用于字符串的比较
    if(s1>s3)
        cout<<"s1>s3"<<endl;
    else
        cout<<"s1<s3"<<endl;
    cout<<s3.compare(s1)<<s1.compare(s3)<<s1.compare(s1)<<endl;//比较s1和s3的大小,小于返还-1,大于返还1,等于返回0

七、子串

    string s1="12345678";
    string s2=s1.substr(2,3);//返回2开始的3个字符组成的字符串
    cout<<s2<<endl;

八、交换

    string s1="12345678";
    string s2="abcd";
    s1.swap(s2);
    cout<<s1<<endl;
    cout<<s2<<endl;

  

 xxxxxxxxxxxx

主要参考 还没有写完

http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html

http://blog.csdn.net/y990041769/article/details/8763366

原文地址:https://www.cnblogs.com/wmxl/p/4795837.html