zoukankan      html  css  js  c++  java
  • 简单回顾C++中的字符串

      C++中有两种字符串形式,一种是C语言字符数组,一般可以使用 char*指针来操作它;另一种是C++中基于标准库的string类型,这算是更高层次的抽象数据类型。

      主要讨论一下string类型,既然是基于标准库的,那么使用它时首先要把头文件拿过来,#include<string> using std:string;

      1.定义和初始化string对象

        string  s1 ;  //默认初始化,s1是一个空串,s1是string类型的一个对象,创建的时候调用了无参构造函数,初始化为空

        string  s2 = s1;   //使用等号,叫做拷贝初始化,我认为 = 调用了拷贝构造函数,将右值赋值到新创建的对象中去,函数原型类似 string(string s1)

        string s3("hello world")  //构造函数初始化

        string s4(10,c)             // s4的值为  "cccccccccc"

      2.string的操作

        os<<s 输入    is>>s  输出     getline(is,s) //cin中读取一行给s,返回is     s.empty() //s为空返回true   s[n] //返回s中第n个字符的引用  s.size() 返回s中字符的个数

      值得注意的是 s.size()的返回类型是 string:size_type类型,看起来它返回一个 int 或者 unsigned 比较合理,但是人家就是返回string:size_type 类型。 这是一个无符号整型的数, 但是如果你在程序中有这样的操作   s.size < n  假设n是一个负数,那么结果八成是true,因为执行这句话时  n转换为无符号数再比较大小,负数转换为无符号数的时候相当大。

        auto len = s.size()    //有了size() 别用 int 了,混用容易出问题

      3.字符串相加的时候注意点

        string s1 =  "老王";

        string s = "123"+"3333"+s1;    // 错的,+号两侧至少有一个string对象

         string s = "3333"+s1+"123";    //正确

     

  • 相关阅读:
    一种高压侧母线过流检测电路的实现
    编程逻辑之状态机学习
    STM32——驱动DS18B20
    迪文屏所有控件测试
    EC11使用原理简介以及LL库源码
    FreeRTOS API使用栗子
    常用官网链接
    CubeMX之FreeRTOS学习day02
    跟工程师学嵌入式开发:基于STM32和μC OS-Ⅲ(学习笔记)
    CubeMX之FreeRTOS学习day01
  • 原文地址:https://www.cnblogs.com/jushuai/p/6055866.html
Copyright © 2011-2022 走看看