STL中的string类

2023-05-16

一、string是什么?

  string类是专门的字符串操作的一个类,非常的强大。

二、string与char* 的区别:

  char* 呢就是指向字符数组地址的指针,然后我们提供了一个string.h,包括很多字符串操作函数,strlen、strcat、strcpy、strcmp等。string则是一个类,将以上内容封装起来,使得字符串更加灵活,方式更多,管理更合理;string这个类,我们使用的时候不用考虑内存的分配与释放,不用担心越界崩溃。

三、string类的使用:

(1)构造函数


#include<iostream>
#include<string>
using namespace std;

int main()
{
    string str;//无参的构造函数
    //empty()为判空函数,若为空输出1,不空输出0
    cout << str << " " << endl;//输出为空
    cout << str.empty() <<endl;//输出为1

    string str1(5,'a');//将5个字符'a'赋值给str1
    cout << str1 << " " << endl;//输出为aaaaa
    cout << str1.empty() <<endl;//输出0

    string str2("abcdefg");//字符串初始化
    cout << str2 << endl;//输出abcdefg

    string str3("abcdefg",3);//字符串初始化并规定只输出前三个
    cout << str3 << endl;//输出abc

    string str4("abcdefg",2,4);//从下标为2的字符开始输出4个字符
    cout << str4 << endl;//cdef

    string str5(str1);//拷贝构造,将str1的内容赋值给str5
    cout<< str5<< endl;//输出aaaaa
    return 0;
}  

(2)属性

  2.1 capacity()


//vc6.0的编译环境
void StrPro()
{
    string str;
    cout << str.capacity() << endl;//0

    string str1("asdfadag");
    cout << str1.capacity() << endl;//31

    string str2(30,'a');
    cout << str2.capacity() << endl;//31

    string str3(32,'a');
    cout << str3.capacity() << endl;//63

    string str4(64,'a');
    cout << str4.capacity() << endl;//95
}  

特别注意:

  (1)如果在vc6.0的编译环境里,字符串为空时,它的容量为0;当字符串的长度在1~31时,它的容量为31,;当长度在32~63时,它的容量为63... ...

    我们可以发现一个规律:字符串的长度如果为空,容量为0;当字符串的长度在1~31,则容量大小为31个,以后每次超过原来容量的大小,就在原来的基础上增加32个(即31+n*32个容量)

  (2)如果在vs2005的编译环境里,我们可以发现这样一个规律:当字符串的长度在0~31,容量大小为15个,以后每次超过原来容量大小,就在原来的基础上增加16个(即15+n*16个容量)

 

  2.2 reserve() 修改字符串容量的大小,只能变大不能变小


//vc6.0的编译环境
void StrPro()
{
    string str1("a");
        cout << str1.capacity() << endl;//31

    str1.reserve(32);//将容量变大
    cout << str1.capacity() << endl;//63

    str.reserve(1);//将容量变小,但容量并没有变小
    cout << str1.capacity() << endl;//63
}  

 

 

  2.3 length()  字符串的长度

    zise()   字符串的个数


void StrPro()
{
       string str1("ascde");
    cout << str1.length() << endl;//5
    cout << str1.size() << endl;//5
}  

 

  2.4 size()   重新设置字符个输,容量的变化和我们上面的讲的一样


//vc6.0的编译环境
void StrPro()
{
    string str2("abcdefg");
    cout << str2.capacity() << endl;//31

    str2.resize(30);

    cout << str2 << endl;//abc
    cout << str2.capacity() << endl;//31

    str2.resize(32);
    cout << str2.capacity() << endl;//63
}  

 

(3)用下标访问字符的两种方式


void fun()
{        
        string str2("abcdefg");
    cout << str2[2] << endl;// c
    cout << str2.at(3) << endl;// d
}        

 


修改容量的大小,只能变大不能变小  

转载于:https://www.cnblogs.com/xumiao1314/p/7444772.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL中的string类 的相关文章

随机推荐

  • ssh允许root登录

    vi etc ssh sshd config Authentication LoginGraceTime 120 PermitRootLogin without password 找到这里 xff0c 把它注释 PermitRootLogi
  • 大型网站技术架构

    大型网站技术架构 xff08 1 xff09 网站都是从小网站一步一步发展为大型网站的 xff0c 而这之中的挑战主要来自于庞大的用户 安全环境恶劣 高并发的访问和海量的数据 xff0c 任何简单的业务处理 xff0c 一旦需要处理数以 P
  • iOS线程池

    多线程开发是一件需要特别精心的事情 xff0c 即使是对有多年开发经验的工程师来说 为了能让初级开发工程师也能使用多线程 xff0c 同时还要简化复杂性 各种编程工具提供了各自的办法 对于iOS来说 xff0c 建议在尽可能的情况下避免直接
  • QT https post请求

    以VS开发为例 因为https访问需要用到SSL认证 xff0c 而QT默认是不支持SSL认证 xff0c 所以在使用之前必须先做一些准备工作 xff1a 需要安装OpenSSL库 xff1a 1 首先打开http slproweb com
  • 在windows下的QT编程中的_TCHAR与QString之间的转换

    由于在windows下的QT编程中 xff0c 如果涉及到使用微软的API xff0c 那么不可避免使用 TCHAR这些类型 xff0c 因此在网上查了一下 xff0c 其中一个老外的论坛有人给出了这个转换 xff0c 因此在这里做一下笔记
  • QT图片旋转

    目前发现有两种方法 xff0c 如下 xff1a 1 使用QPixmap的transformed函数旋转 xff0c 这个函数默认是以图片中心为旋转点 xff0c 不能随意设置旋转点 xff0c 使用如下 xff1a QMatrix lef
  • signtool对EXE进行签名

    数字证书 xff0c 真是个神奇的东西 xff0c 可以保证软件不被修改 xff0c 可以表明文件的发布日期 xff0c 最重要的 xff0c 可以很大程度的减少杀毒软件的误报 xff0c 当然 xff0c 这就要使用可信任的机构颁发的证书
  • Linux C语言实现UDP的发送和接收

    发送端实现 xff1a U1 c include lt stdio h gt include lt stdlib h gt include lt string h gt include lt sys socket h gt include
  • C语言 特殊的数字

    问题描述 153是一个非常特殊的数 xff0c 它等于它的每位数字的立方和 xff0c 即153 61 111 43 555 43 333 编程求所有满足这种条件的三位十进制数 span class token macro property
  • STL简单的介绍

    我们要知道C 43 43 的含义 xff1a C语言 43 类 43 模板 xff08 STL就是典型的代表 xff09 STL是Standard Template Library的简称 xff0c 中文名是标准模库 从根本上说 xff0c
  • C语言 查找整数

    问题描述 给出一个包含n个整数的数列 xff0c 问整数a在数列中的第一次出现是第几个 输入格式 第一行包含一个整数n 第二行包含n个非负整数 xff0c 为给定的数列 xff0c 数列中的每个数都不大于10000 第三行包含一个整数a x
  • C语言 字母图形

    问题描述 利用字母可以组成一些美丽的图形 xff0c 下面给出了一个例子 xff1a ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形 xff0c 请找出这个图形的规律 xff0c 并输
  • C++ 无参构造函数

    设计表示平面坐标位置的点类 xff0c 可以修改和获取点的x y坐标值 xff0c 设置构造函数对点的数据成员进行初始化 xff0c 并且能够用数组保存一系列的点 span class token macro property span c
  • C语言 矩阵乘法

    问题描述 给定一个N阶矩阵A xff0c 输出A的M次幂 xff08 M是非负整数 xff09 例如 xff1a A 61 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M xff08 1 lt 61 N
  • C语言 分解质因数

    问题描述 求出区间 a b 中所有整数的质因数分解 输入格式 输入两个整数a xff0c b 输出格式 每行输出一个数的分解 xff0c 形如k 61 a1a2a3 a1 lt 61 a2 lt 61 a3 xff0c k也是从小到大的 具
  • 编译原理 赋值语句翻译成四元式

    赋值语句及算数表达式的翻译 将赋值语句翻译成四元式的语义描述 1 S gt id 61 A 2 A gt id 3 A gt int 4 A gt real 5 A gt A1 43 A2 6 A gt A1A2 7 A gt A1 8 A
  • 关联容器知识点通关

    关联容器 1 关联容器与顺序容器的区分2 关联容器的数据2 1 数据存储2 1 1 pair类型2 1 2 关联容器的类型别名2 1 3 关联容器迭代器 2 2 关联容器的初始化 3 关联容器的增删改查3 1 关联容器增加元素3 2 删除关
  • django JWT 验证401错误

    因为前端请求时携带了Authorization请求头 xff08 主要是JWT xff09 xff0c 而如果用户未登录 xff0c 此请求头的JWT无意义 xff08 没有值 xff09 xff0c 为了防止REST framework框
  • “轻松搞定 CMake”系列之 find_package 用法详解

    一 find packakge 命令基本介绍 在我们实际开发过程中 xff0c 经常不可避免会使用到第三方开源库 xff0c 这些开源库可能是通过 apt get install 命令自动安装到系统目录中 xff0c 也可能是由我们自己下载
  • STL中的string类

    一 string是什么 xff1f string类是专门的字符串操作的一个类 xff0c 非常的强大 二 string与char 的区别 xff1a char 呢就是指向字符数组地址的指针 xff0c 然后我们提供了一个string h x