zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    2.WindowsServer2012R2装完的一些友好化设置
    架构畅想:如果以你所会去进行架构,会到哪一步?
    如何导出已有的谷歌插件,又如何把导出的插件安装到360浏览器中,又如何对插件小修小改?
    SQL:指定名称查不到数据的衍伸~空格 换行符 回车符的批量处理
    SVN:服务器资源删掉,本地添加时和删掉的名字同名出现One or more files are in a conflicted state.
    我为NET狂-----大前端专帖
    逆天通用水印扩展篇~新增剪贴板系列的功能和手动配置,卸除原基础不常用的功能
    万恶的剪贴板==》为存储而生
    转帖:DotNet 资源大全中文版
    在不动用sp_configure的情况下,如何 =》去掉列的自增长,并保留原数据
  • 原文地址:https://www.cnblogs.com/wmxl/p/4795837.html
Copyright © 2011-2022 走看看