zoukankan      html  css  js  c++  java
  • 字符串系列二:C++标准库string类型

    C++语言提供了专门处理长度可变的字符串的标准库string类型,标准库负责管理与存储字符相关的内存并提供字符串相关操作,头文件为"string"。

    (1)string类型的定义和初始化

    string标准库支持以下几个构造函数:

    构造函数 功能
    string s 默认构造函数,s初始化为空串
    string s2(s1) 将s2初始化为s1的一个副本
    string s3("value") 用一个字符串字面值副本初始化s3
    string s4(n, 'c') 将s4初始化为字符'c'的n个副本
    string s5(cp,n) 将s5初始化为cp所指向数组的前n个元素的副本
    string s6(s1,pos) 用s1中从下标pos开始的字符的副本对s6初始化,如果pos>s1.size(),该操作未定义
    string s7(s1,pos,len) 用s1从下标pos开始的len个字符的副本初始化s7,无论len为多少,最多只能复制s1.size()-pos个字符

    注意:字符串字面值与标准库类型string类型并不是同一种类型,编程时应加以区分。

    (2)string对象的读写

    C++中可以使用标准输入输出操作符来读写string对象。使用标准输入读入string时,会忽略开头所有的空白符(如空格、换行符、制表符),读取直到再次遇到空白符时终止。

    如下面的程序,输入的字符串为"Hello world!",s中保存的字符串为"Hello",输出的结果也为"Hello"。

    1 string s;
    2 cin>>s;
    3 cout<<s<<endl;

    如果修改为如下,那么输出为"Helloworld!"。

    string s1,s2;
    cin>>s1>>s2;
    cout<<s1<<s2<<endl;

    使用getline读取字符串时,直到遇到换行符截止,同时不保留结尾处的换行符。

    (3)字符串相关操作

    a. size()函数 string标准库的size()函数返回字符串的长度,但是返回的类型不是整型,而是string::size_type,这同vector标准库中的操作。这是因为string类类型和其他许多库类型都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关。size_type就是这些配套类型中的一种,它定义为与unsigned(unsigned int或unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。在使用size_type时,需要加上域操作符来说明所使用的size_type类型是由string类定义的。

    b. 和字符串字面值连接 string对象可以通过加号直接连接,但是字符串字面值不是string类对象,当需要将string对象和字符串字面值连接时,返回的是一个string对象,但是不能直接将两个字符串字面值直接通过相加连接,因为它们是C风格字符串。

    c. 下标操作可用作左值 string对象的下标操作返回值是左值,可以对相应的字符进行修改,如:

    string s("hello");
    s[1] = '-';

    d. 字符串中字符的处理 有的时候需要处理一个string对象中具体的某个位置的字符,此时可以通过包含头文件cctype调用相关的函数进行处理;cctype其实就是利用了C标准库函数,这些库函数定义在C标准库的ctype.h头文件中。

    C++标准库中具体的处理字符串的一些操作可以在文章http://www.cnblogs.com/sophia-yun/articles/3153473.html中找到。

  • 相关阅读:
    常用命令之mongodb
    常用之juc
    常用命令
    WSL2错误Error 0x1bc解决
    sudo:Unable to stat '/etc/sudoers': Permission Denied 解决办法
    CPIO写入ROOTFS到磁盘分区
    getElementsByClassName
    PetaLinux通过fw_printenv访问u-boot中的环境变量
    1. 两数之和
    find xargs grep查找文件及文件内容
  • 原文地址:https://www.cnblogs.com/sophia-yun/p/3158869.html
Copyright © 2011-2022 走看看