zoukankan      html  css  js  c++  java
  • string的基础用法

    转自:https://blog.csdn.net/fioletfly/article/details/53941954

    string的用法

    定义和初始化string对象

    直接初始化和拷贝初始化

    • 直接初始化,利用小括号来完成,推荐使用,可以提高程序的效率
    • 拷贝初始化,利用等号的初始化,以后使用类或者结构体中尽可能写减少这个使用方法

    1 //定义和初始化string对象
    2 string s1;    //定义以空字符,使用类中默认初始化
    3 string s2 = s1;    //拷贝初始化,用s1赋值给s2
    4 string s3 = "Hello";//拷贝初始化,用字符串字面值初始化s3
    5 string s4(10, 'c');    //直接初始化,s4的内容是cccccccccc
    6 string s5(s3);    //直接初始化,这是新的初始化方式,等价于s5 = s3
    7 string s6("World");    //直接初始化,这是新的初始化方式,等价于s6 = "World"

    string对象上的操作

    读写string对象

    • 利用cin>> 来写入字符,是从第一个非空白字符开始,到一下一个空白结束
    • 如果想反复的读取字符的话可以利用while(cin<<),可以一直输入字符
      • 遇到非法输入会停止或者结束符
      • ctrl+d for unix/linux/ etc    
      • ctrl+z for windows/dos
    • 使用getline 来读取一整行
    1 string s1;
    2 cin >> s1;    //输入第一个非空格,换行符,制表符等字符中,遇到空格就会停止。如" hello world"
    3 cout << s1 << endl;    //显示的是 hello
    4 string s2, s3; 5 cin >> s2 >> s3; //输入"Hello world!" 6 cout << s2 << s3 << endl;//输出 "Helloworld"

    string content;
    while (cin >> content)    //一直输入,知道遇到文件结束符
    {
    cout << content;
    }

    string::size_type类型

    • size_type是一个无符号类型的值
    • string::size_type从本质上来说,是一个整型数。关键是由于机器的环境,它的长度有可能不同。
    • 添加这种类型是为了几种配套的类型,这样实现了使用的时候就与机器无关
    • 可以通过 auto 或者decltype 来推断string类中的size()类型
    • 在使用的过程中切记不要与带符号的数混用,如与int 类型混用

    比较string对象

    • 可以实现以下符合的比较 == ,!= ,<,<=,>,>= 
    • 区分大小写,规则如下  1. 根据长度不同时,如果对应位置字符相同时,较长的大于较短的  2. 如果对应位置不同时,直接比较第一个不同字符的结果

    实例练习:

    1. "Hello", " Hello" "Hello world" "Hiya"

     1 //字符串的比较运算
     2 string s1("Hello");
     3 string s2("HelloWorld");
     4 string s3("Hiya");
     5 
     6 if (s1 > s2)
     7 {
     8 cout << "s1:Hello > s2:HelloWorld" << endl;
     9 }
    10 else
    11 {
    12 cout << "s1:Hello < s2:HelloWorld" << endl;
    13 }
    14 
    15 if (s1 > s3)
    16 {
    17 cout << "s1:Hello > s3:Hiya" << endl;
    18 }
    19 else
    20 {
    21 cout << "s1:Hello < s3:Hiya" << endl;
    22 }

    两个对象string相加运算

    • 两个对象相加,相当于将加号前后的内容追加在一起
    • s1 += s2, 将s2的内容追加到s1上面

    字面量与string对象相加

    • 切记需要在等号两侧都需要出现一个string对象
    • 由于string 对象加上一个字面量,就相当于自动将字面量转换成string对象
    • 当字面量加上一个对象的时候,由于字符串字面量在前面,而其并不是标准类型的string 的对象,所以编译器不知道其实际的类型,会导致报错

    实例练习:

    1. string a = " ,"+"hello"+s1等练习

     1 //字符串的相加运算
     2 string s1("abcd");
     3 string s2("efgh");
     4 s1 += s2;
     5 cout << s1 << endl;
     6 cout << s2 << endl;
     7 
     8 string s3 = s1 + "ijk";
     9 cout << s3 << endl;
    10 
    11 string s4 = "ijk" + s1;
    12 cout << s4 << endl;
    13 
    14 string s5 = "abc"+ "lmn" + s4;    // abc 和 lmn 都是字面量,而不是字符串,编译器不知道其类型
    15 string s6 = s4 + "abc" + "lmn"; //s4 + "abc" 就会自动变成一个字符串,然后字符串再加上"lmn"

    应用:51nod 1097 拼成最小的数

    脖子痛 T^T 。。 

  • 相关阅读:
    二叉树遍历
    NO.35 2021/12/13(06:50)[周一]
    NO.29 2021/11/30(06:30)[周二]
    NO.22 2021/11/19(06:15) [周五]
    The .NET ORM Architec
    C#格式字符串
    C# Attribute
    .net DLL反编译文件
    【Beta】Scrum meeting1
    【Alpha】Scrum meeting 6
  • 原文地址:https://www.cnblogs.com/JiaaaaKe/p/9469392.html
Copyright © 2011-2022 走看看