zoukankan      html  css  js  c++  java
  • 17.C++-string字符串类(详解)

    C++字符串string类

    在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低.

    所以在C++标准库里,通过类string从新自定义了字符串。

    头文件: #include <string>

    • string直接支持字符串连接
    • string直接支持字符串的大小比较
    • string直接支持子串查找和提取
    • string直接支持字符串的插入和替换
    • string同时具备字符串数组的灵活性,可以通过[ ]重载操作符来访问每个字符。

    字符串数组和string对象尽量不要混合使用,会带来意想不到的问题

    例如,通过字符串数组赋值给string对象:

    打印运行:

    这是因为,使用for循环拷贝,仅仅改变了str的串内容,并没有改变str的length长度.

    string类常用的成员函数有:

      

     

    const char* c_str();   

    返回一个常量C字符串, 内容与本string串相同. 

    注意:当本string的内容改变,或被析构后,返回的字符串也不会被改变,因为返回的字符串是从新通过new char[]出来.

    参考下面代码,可以发现返回的C字符串地址和string里的字符串地址完全不同:

    反转相关(位于头文件<algorithm>)

    拷贝相关:

    "abcdefg" 循环右移3位等到: "efgabcd"

    代码如下:

    代码如下:

      

    字符串与数字的转换

    以前,在C里,当我们想获取字符串里的数字时,一般都是通过strtoul()或者sscanf()获取

    在C++标准库里,也提供字符串与数字的转换.位于<sstream>头文件.

    同时需要用到两个类:

    将string 字符串 ->数字,使用方法如下

    也可以通过临时对象转换,这样写:

    或者将第3行,写为宏:

      

    将数字->string 字符串,使用方法如下

    也可以通过宏,这样写:

      


    文章来源:https://www.cnblogs.com/lifexy/p/8642163.html

  • 相关阅读:
    另一种阶乘问题
    韩信点兵
    java字符串大小写转换
    实现对字符串数组{"Allen","Smith","James","Martin","Ford"} 求得包含字母a的所有的名字
    将一维数组中的0去掉,不为0的项存入一个新的数组中
    hibernate -- HQL语句总结
    oracle intersect 取交集
    Spring中applicationContext.xml的bean里的id和name属性区别
    spring 源码分析
    python爬虫
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9673918.html
Copyright © 2011-2022 走看看