zoukankan      html  css  js  c++  java
  • C++字符串

    初识字符串

      所谓字符串string,就是一序列的字符。也就是说,多个字符拼起来就是一个字符串了,但是字符串和字符是两个完全不同的数据类型。在前面讲字符的博客也提到过(详见C++——字符),字符串使用双引号(""),而字符使用的是单引号('')。下面声明一个string类型的变量str,它的值是I like C++

    string str = "I like C++";
    cout << str << endl;
    //显示结果:I like C++

      string类型不是C++中原有的数据类型,它是一个对象类型,对象和类在之后会有详细介绍,现在看不懂没有关系,直接略过就可以了。对象是通过类定义的,string就是一个预先定义在头文件<string>中的类。而一个对象是一个类的实例。

      这里有必要说一下string的初始化。我们说,任何一个变量都应该被初始化,这是一种好的编程风格,以避免不必要的错误。

    string s = "";
    //string的初始化,初始化为空字符串

    string函数

    函数 描述
    length() 返回字符串中的字符个数
    size() 同上
    at(index) 返回字符串指定位置的字符

    举个栗子:

    string str = "I like C++";
    cout << "str的值是:" << str << endl;
    //str的值是:I like C++
    cout << "str的长度为:" << str.length() << endl;
    //str的长度为:10
    cout << "str的第一个字符是:" << str.at(0) << endl;
    //str的第一个字符是:I
    //访问字符串某个位置的字符也可以用str[index]的方式
    //注意,在几乎所有程序语言中,一个序列的第一个元素的下标是0而不是1
    //因此,下标的范围是0~str.length()-1

    字符串操作

    1. 修改字符串

    如果想要修改字符串某个位置的字符,可以通过下标直接修改:

    string str = "I like C++";
    str[0] = 'i';
    cout << str << endl;
    //i like C++

    2. 连接字符串

    如果想要连接两个字符串,可以用"+":

    string s1 = "I like ";
    string s2 = "C++";
    string s3 = s1 + s2;
    cout << "s1 + s2 : " << s3 << endl;
    //s1 + s2 : I like C++

    也可以使用"+=": 

    string s1 = "I like ";
    string s2 = "C++";
    
    cout << "原s1:" << s1 << endl;
    //原s1:I like 
    
    s1 += s2;
    //相当于s1 = s1 + s2;
    cout << "拼接后s1 : " << s3 << endl;
    //拼接后s1 : I like C++

    3. 比较字符串

    用关系运算符比较(==, !=, <, <=, >, >=),比较的规则是:从左向右比较每一个字符,也就是说字符串的比较实际是在比较字符

    假设s1为ABC,s2为ABD

    对于关系式(s1 < s2),首先比较各自的第一个字符(都是A),相等,再比较第二个字符(都是B),相等,然后比较第三个字符(s1[2] = 'C',s2[2] = 'D','C' < 'D'),故关系式为true。

    4.读取字符串

    string city = "";
    cout << "Enter a city: ";
    //假设从键盘输入:Tianjin
    cin >> city;
    cout << "The city you entered is " << city << endl;
    //输出:The city you entered is Tianjin

    但是这个程序有一个问题,就是当城市的名字中间有空格怎么办?因为键盘输入时,空格是分割符,加入我们输入"New York",那么最后显示的结果是:"The city you entered is New"。这很明显不是我们想要的结果。解决方案如下:

    string city = "";
    cout << "Enter a city: ";
    //假设从键盘输入:New York
    getline(cin, city, '
    ');
    //第三个参数' '可以不写,因为getline函数第三个参数的默认值就是' ',即可以写成getline(cin, city) cout
    << "The city you entered is " << city << endl; //输出:The city you entered is New York
  • 相关阅读:
    OneNote2007产品密钥及激活方法
    穿着马甲的编码方式链式
    String 转换NameValueCollection 的方法 , 这是原创 嘎嘎
    TransactionScope分布式事务无法使用时, 配置并启动 MSDTC 的解决方案
    Spirit越狱3.1.3/3.2固件(Windows)
    智能感知 不正常的解决方法
    HttpHandler HttpModule入门篇
    Microsoft.Practices.Unity依赖注入使用实例
    ViewEngine 深入解析与应用实例
    打开chm文件提示“已取消到该网页的导航”的解决方案
  • 原文地址:https://www.cnblogs.com/bwjblogs/p/12606129.html
Copyright © 2011-2022 走看看