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.pswp.cn/bicheng/78499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78499.shtml
英文地址,請注明出處:http://en.pswp.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&…