C++:string 1

练习题:

这个题的思路是从前往后,从后往前同时找,不是字母的话就继续,是的话就交换。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;

//1、4个默认成员函数
void test_string1()
{
    string s1;
    string s2("hello");
    string s3("hello", 2);
    string s4(s2);
    string s5(s2, 1, 2);
    string s6(s2, 1);
    string s7(10, 'a');
    s1 = s7;

    cout << s1 << endl;
    cout << s2 << endl;
    cout << s3 << endl;
    cout << s4 << endl;
    cout << s5 << endl;
    cout << s6 << endl;
    cout << s7 << endl;
}

//遍历
void test_string2()
{

    string s1("hello");
    s1 += ' ';
    s1 += "world";
    cout << s1 << endl;

    //读  推荐用这种方式
    for (size_t i = 0; i < s1.size(); i++)
    {
        cout << s1[i] << " ";
    }

    //写
    for (size_t i = 0; i < s1.size(); i++)
    {
        s1[i] += 1;
    }
    cout << endl;

    //读
    for (size_t i = 0; i < s1.size(); i++)
    {
        cout << s1[i] << " ";
    }
    cout << endl;

    //迭代器
    //写
    string::iterator it = s1.begin();
    while (it != s1.end())
    {
        *it -= 1;
        ++it;
    }

    //读
    it = s1.begin();
    while (it != s1.end())
    {
        cout << *it << " ";
        ++it;
    }
    cout << endl;

    //范围for
    //C++11 -> 原理是被替换成迭代器
    for (auto ch : s1)
    {
        cout << ch << " ";
    }
    cout << endl;
}

int string2int(const string& str)
{
    int val = 0;
    string::const_iterator it = str.begin();
    while (it != str.end())
    {
        //*it = 'a';//const 迭代器不能修改
        val *= 10;
        val += *it-'0';
        ++it;
    }
    return val;
}

void test_string3()
{
    string s1("hello world!");
    //倒着往前遍历
    string::reverse_iterator rit = s1.rbegin();
    //读
    while (rit != s1.rend())
    {
        cout << *rit << " ";
        ++rit;
    }
    cout << endl;

    string nums("12345");
    cout << string2int(nums) << endl;

    //方向:正向和反向
    //属性:普通和const
}

void test_string4()
{
    string s1("hello world!");
    string s2("hello");
    cout << s1.size() << endl;
    cout << s2.size() << endl;
    cout << s1.length() << endl;
    cout << s2.length() << endl;

    cout << s1.capacity() << endl;
    cout << s2.capacity() << endl;

    s1 += "hehe";
    cout << s1.capacity() << endl;
    s1.clear();//只是清除了内容,并不将capacity置0
    cout << s1 << endl;
    cout << s1.capacity() << endl;
}

void test_string5()
{
    string s;
    //s.reserve(100);
    //s.resize(100, 'x');
    size_t sz = s.size();

    cout << "making s grow:\n";
    for (int i = 0; i < 100; i++)
    {
        s.push_back('c');
        if (sz != s.capacity())
        {
            sz = s.capacity();
            cout << "capacity changed:" << sz << endl;
        }
    }
}

void test_string6()
{
    //string s;
    //s.push_back('x');
    //s.append("x");

    //s += '1';
    //s += "hello";

    //cout << s << endl;

    string s;
    s += '1';
    s += "3456";
    cout << s << endl;
    s.insert(s.begin(), '0');
    cout << s << endl;
    s.insert(2, "2");
    cout << s << endl;
    s.erase(2, 3);
    cout << s << endl;
    s.erase(2, 10);
    cout << s << endl;
}


int main()
{
    //test_string1();
    //test_string2();
    //test_string3();
    //test_string4();

    //test_string5();
    test_string6();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SMT贴片加工费控制与优化实践指南

内容概要 SMT贴片加工费的控制与优化需建立在对成本结构的系统性认知基础上。本节从物料采购、设备运行、工艺参数三大维度切入&#xff0c;结合BOM清单管理、钢网使用规范等实操环节&#xff0c;构建覆盖全流程的降本增效框架。以下表格列举了SMT加工成本的典型构成要素及其占…

未来医院已来:AI如何实现无死角安全监控

AI智慧医院如何用算法守护安全与效率 ## 背景&#xff1a;医疗场景的智能化转型需求 现代医院作为人员密集、场景复杂的公共场所&#xff0c;面临诸多管理痛点&#xff1a;患者跌倒可能延误救治、医闹事件威胁安全、医疗垃圾处置不当引发感染风险、重点区域&#xff08;如药…

Nuxt3中使用UnoCSS指南

Nuxt3中使用UnoCSS指南 UnoCSS是一个高度可定制的、原子化CSS引擎&#xff0c;可以轻松集成到Nuxt3项目中。下面介绍如何在Nuxt3中安装和配置UnoCSS。 安装步骤 安装UnoCSS的Nuxt模块&#xff1a; # 使用pnpm pnpm add -D unocss unocss/nuxt# 使用yarn yarn add -D unocss…

mmap详解

mmap详解 mmap基础概念mmap内存映射原理mmap相关函数调用mmap的使用细节mmap和常规文件操作的区别 mmap基础概念 mmap是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一…

Vue3的内置组件 -实现过渡动画 TransitionGroup

Vue3的内置组件 -实现过渡动画 TransitionGroup 是一个内置组件&#xff0c;用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果 支持和 基本相同的 props、CSS 过渡 class 和 JavaScript 钩子监听器&#xff0c;但有以下几点区别&#xff1a; 默认情况下&…

【软考-架构】14、软件可靠性基础

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 软件可靠性基本概念软件可靠性建模软件可靠性管理软件可靠性设计N版本程序设计恢复块设计&#xff08;动态冗余&#xff09;双机容错技术、集群技术负载均衡软件可靠性测试…

使用Python+OpenCV对视频抽帧保存为JPG图像

使用PythonOpenCV对视频抽帧保存为JPG图像 import os import cv2 import time#视频文件夹路径&#xff0c;可修改 videoPath D:\\video\\ #保存的图片文件夹路径&#xff0c;可修改 savePath D:\\images\\ videolist os.listdir(videoPath) if not os.path.exists(savePath…

学习整理在centos7上安装mysql8.0版本教程

学习整理在centos7上安装mysql8.0版本教程 查看linux系统版本下载mysql数据库安装环境检查解压mysql安装包创建MySQL需要的目录及授权新增用户组新增组用户配置mysql环境变量编写MySQL配置文件初始化数据库初始化msyql服务启动mysql修改初始化密码配置Linux 系统服务工具,使My…

DeepSeek预训练追求极致的训练效率的做法

DeepSeek在预训练阶段通过多种技术手段实现了极致的训练效率,其中包括采用FP8混合精度训练框架以降低计算和内存需求 ,创新性地引入Multi-head Latent Attention(MLA)压缩KV缓存以提升推理效率,以及基于Mixture-of-Experts(MoE)的稀疏计算架构以在保证性能的同时显著降低…

【计算机视觉】CV项目实战- 深度解析TorchVision_Maskrcnn:基于PyTorch的实例分割实战指南

深度解析TorchVision_Maskrcnn&#xff1a;基于PyTorch的实例分割实战指南 技术背景与核心原理Mask R-CNN架构解析项目特点 完整实战流程环境准备硬件要求软件依赖 数据准备与标注1. 图像采集2. 数据标注3. 数据格式转换 模型构建与训练1. 模型初始化2. 数据加载器配置3. 训练优…

x86系列CPU寄存器和汇编指令总结

文章目录 概要一、寄存器1.1、8086寄存器1.2、通用寄存器1.3、扩展寄存器 二、指令集三、x86指令集常见指令使用说明四、汇编4.1、汇编语法4.2、nsam汇编 五、参考 概要 在对学习Go的过程中&#xff0c;涉及到了汇编&#xff0c;因此对X86系列CPU的背景、寄存器、汇编指令做了一…

戴维斯双击选股公式如何编写?

戴维斯双击&#xff0c;指的是营收增长和净利润增长同步&#xff0c;并有超预期的财务状况。 戴维斯双击是指在低市盈率&#xff08;P/E&#xff09;时买入股票&#xff0c;待公司盈利增长和市盈率提升后卖出&#xff0c;以获取双重收益。以下是一个简单的通达信选股模型示例&…

前端面试宝典---vue原理

vue的Observer简化版 class Observer {constructor(value) {if (!value || typeof value ! object) returnthis.walk(value) // 对对象的所有属性进行遍历并定义响应式}walk (obj) {Object.keys(obj).forEach(key > defineReactive(obj, key, obj[key]))} } // 定义核心方法…

从“聋哑设备“到超级工厂:EtherCAT转Modbus协议网关正在重构工业未来

当全球工厂加速迈向工业4.0&#xff0c;您的生产线是否因Modbus设备“拖后腿”而被迫降速&#xff1f;无需百万改造&#xff01;无需淘汰设备&#xff01;一套EtherCAT从站转Modbus协议网关&#xff0c;让30年老机床与智能工厂实时对话&#xff0c;效率飙升300%&#xff01; 一…

Tauri文件系统操作:桌面应用的核心能力(入门系列四)

今天我们来聊聊Tauri中一个超级重要的功能 - 文件系统操作。这可是Web应用和桌面应用最大的区别之一。在浏览器里&#xff0c;出于安全考虑&#xff0c;我们对文件系统的访问被限制得死死的。但在Tauri桌面应用中&#xff0c;我们可以安全地访问用户的文件系统&#xff0c;这简…

Python解析地址中省市区街道

Python解析地址中省市区街道 1、效果 输入&#xff1a;海珠区沙园街道西基村 输出&#xff1a; 2、导入库 pip install jionlp3、示例代码 import jionlp as jiotext 海珠区沙园街道西基村 res jio.parse_location(text, town_villageTrue) print(res)

基于Node+HeadlessBrowser的浏览器自动化方案

基于NodeHeadlessBrowser的浏览器自动化方案 什么是无头浏览器(Headless Browser)&#xff1f; 无头浏览器&#xff0c;就像是一个没有用户界面的浏览器程序。你可以想象它就是一个“隐形”的浏览器&#xff0c;只不过它没有图形界面&#xff0c;但能做我们用普通浏览器所能做…

AEB法规升级后的市场预测与分析:技术迭代、政策驱动与产业变革

文章目录 一、政策驱动&#xff1a;全球法规升级倒逼市场扩容二、技术迭代&#xff1a;从“基础防护”到“场景全覆盖”三、市场格局&#xff1a;竞争加剧与生态重构四、挑战与未来展望五、投资建议结语 近年来&#xff0c;全球汽车安全法规的加速升级正深刻重塑AEB&#xff08…

【Docker项目实战】使用Docker部署Caddy+vaultwarden密码管理工具(详细教程)

【Docker项目实战】使用Docker部署vaultwarden密码管理工具 前言一、vaultwarden介绍1.1 vaultwarden简介1.2 主要特点二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、拉取镜像五、…

第十六届蓝桥杯大赛软件赛省赛第二场

第十六届蓝桥杯大赛软件赛省赛第二场 大家好。最近参加了第十六届蓝桥杯大赛软件赛省赛第二场 Python 大学 B 组的比赛&#xff0c;现在来和大家分享一下我的解题思路和代码实现。以下内容是我自己写的&#xff0c;可能对也可能错&#xff0c;欢迎大家交流讨论。 试题 A&…