【模板】字符串处理 (STL使用)

16、掌握C++中的字符串处理与标准模板库(STL) 本文详细介绍了C++中的字符串处理与标准模板库(STL)的使用方法,涵盖string类的基本操作、智能指针的替代方案、STL容器的高级应用以及STL算法与容器的结合使用。通过具体示例和代码片段,帮助读者掌握高效处理字符串和管理复杂数据结构的技巧。 阅读详情

有关的字符串问题的基础使用 

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
	string str1="March";
	string str2="11th";
	//原型 const char *c_str() 
	//注意 c_str()返回一个指向正规C字符串的指针,内容和string类对象相同 
	const char *first=str1.c_str();
	const char *second=str2.c_str();
	char *merge=new char[strlen(first)+strlen(second)+1];//动态申请内存空间 
	strcpy(merge,first);
	strcat(merge,second);
	
	printf("%s\n",merge);//C输出字符串 
	cout<<merge<<endl;//C++直接输出merge指向的字符串(C++为了方便专门设计)
	cout<<*merge<<endl;//输出第一个字符M
	
	//和整型数组对比 
	int a[2]={5,1};
	cout<<a<<endl;//输出a的指针 
	cout<<*a<<endl; //输出第一个元素5 
	
	delete []merge;
	return 0;
}

 

 //STL string基本字符串(第一部分)
 //和C/C++比较
#include<cstring>
#include<iostream>
using namespace std;
int main(void)
{
	string s;
	s="March 12th";
	cout<<"Length:"<<s.length()<<"\t"<<"Text:"<<s<<endl;
	
	/*直接把字符串赋值给string*/
	char ss[15]="March 13th";
	s=ss;//直接赋值 
	cout<<"Length:"<<s.length()<<"\t"<<"Text:"<<s<<endl;
	 
	 /*把string类赋值给数组*/
	 char ss2[15];
	 string s2="2019 03 12";
	 strcpy(ss2,s2.c_str());
	 cout<<"Length:"<<s2.length()<<"\t"<<"Text:"<<ss2<<endl;
	 //cout可以直接输出char字符串和string,也可以用printf
	 
	 /*尾部追加字符串(+/append())*/
	 s2=s2+" Z";
	 s2.append(" X");
	 cout<<"Append:"<<s2<<endl; 
	 
	 /*插入字符*/
	 string name="University"; 
	 string::iterator it;
	 it=name.begin();
	 name.insert(it+3,'h');//插入字符用单引号 
	 cout<<"Insert:"<<name<<"\t"<<"1st:"<<name[0]<<endl;
	 
	 /*删除元素*/
	 name.erase(it);//删除单个元素 
	 cout<<"1st Delete:"<<name<<"\t";
	 name.erase(name.begin(),name.begin()+7);//元素位置从0开始计数 
	 cout<<"2nd Delete:"<<name<<endl;
	 
	return 0;
} 
  
//STL string基本字符串(第二部分)
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void)
{
	/*替换string对象的字符*/
	string s="123456789";
	s.replace(3,3,"cs cs");//从下标为3的字符开始,将连续的3个字符,替换为"cs" 
	cout<<"Replace:"<<s<<endl;
	
	/*搜索string的元素或者子串*/
	s="apple pear";
	cout<<"Index for a:"<<s.find('a')<<"\t";//输出第一个下标
	cout<<"Index for pp:"<<s.find("pp")<<endl;
	
	/*字符串比较*/
	s="cat dog cat";
	string ss="cat";
	string sss="Cat";
	cout<<"s compare with ss:"<<s.compare(ss)<<"\t"; 
	cout<<"ss compare with sss:"<<s.compare("Cat")<<endl;
	//大写A 65 41H 小写97 61H  
	
	/*字符串翻转*/
	reverse(sss.begin(),sss.end());//属于algorithm 
	cout<<"Reverse:"<<sss<<endl; 
	
	/*利用string进行数位处理*/
	string num="314159";
	int sum=0;
	for(int i=0;i<num.length();i++)
	{
		sum+=num[i]-'0';
	 } 
	 cout<<"The sum of num:"<<sum<<endl;
	
	/*string和字符数组相互操作*/
	string str1;
	char str2[20]="abcabc";
	str1=str2;
	cout<<"字符数组可以直接赋值string:"<<str2<<endl;
	
	str1.append("def");
	cout<<"string要经过c_str()才能转换:"<<str1.c_str()<<endl;
	strcpy(str2,str1.c_str());
	cout<<"采用strcpy把string存储到字符数组:" <<str2<<endl;
	 
	 return 0;
 } 

 

//STL
//
#include<iostream>
#include<cstring>
#include<algorithm>
#include<sstream> 
using namespace std;
int main(void)
{
	/*sscanf 将字符串按照一定格式分离字符串*/
	//牛客:日志排序 
	char s[101];int n=4;
	while(n--)
	{
		int year ;int month;int day;
		scanf("%s",&s);
		sscanf(s,"%4d%2d%2d",&year,&month,&day);
		printf("%d %d %d\n",year,month,day); 
	}
	
	return 0;
 } 
 
//STL
#include<iostream>
#include<cstring>
#include<algorithm>
#include<sstream> 
using namespace std;
string doubleToString(double x)
{
	ostringstream os;//定义输出流 
	if(os<<x) return os.str();
 } 
 double stringToDouble(const string &s)
 {
 	istringstream i(s);
 	double x;
 	if(i>>x) return x;
 }
int main(void)
{
	/*string和数值相互转换*/
	/*数值转换成string C方法*/
	char b[10];
	string a;
	sprintf(b,"%d",1922);//把数据格式化输出到某个字符串 
	cout<<"数值转换string(sprintf):"<<b<<endl;
	
	/*数值转换为string C++ */ 
	string cc=doubleToString(1998.1022);
	cout<<"数值转换string(ostringstream):"<< cc<<endl; 
	
	/*string转换成数值 C++*/
	string dd="2020";
	int p= stringToDouble(dd);
	cout<<"string转换数值(istringstream):" <<p<<endl;
	return 0;
 } 
 

 

51单片机-点亮LED和蜂鸣器 ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。 阅读详情

相关推荐

深入解析设计规则检查约束:set_max_transition与set_max_capacitance的实战应用

本文深入解析了芯片设计中的关键设计规则检查约束set_max_transition与set_max_capacitance。通过剖析信号转换时间与负载电容的原理,结合实战案例,阐述了如何设置约束以保障信号完整性、控制功耗与时序,并提供了在综合与布局布线阶段的应用策略与修复方法。

weixin_29233857的博客 173

【C语言程序设计】【C语言】判断字符串内容

// 判断字符串开头是不是回车换行('\n'或'\r'),如果不是返回0,如果是,返回有几个这样的字符。 int isNewLine(char* acStr) { int iSize = 0; if(acStr[0] == '\n' || acStr[0] == '\r') { iSize ++; acStr ++; while(acStr[0] == '\n' || acStr[...

weixin_42302504的博客 1万+

基本模型 PINNs : Physics Informed Neural Networks

系列最开始当然要提到很经典的文章 —— Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations 。 这篇文章是布朗大学的助理教授Maziar Rais...

waitingwinter的博客 3万+

** 标准模板库 STL-2 编程题#4: 字符串操作(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;OpenJudge)

编程题#4: 字符串操作来源: POJ (http://cxsjsxmooc.openjudge.cn/test/U/)注意: 总时间限制: 1000ms 内存限制: 65536kB描述 给定n个字符串(从1开始编号),每个字符串中的字符位置从0开始编号,长度为1-500,现有如下若干操作: copy N X L:取出第N个字符串第X个字符开始的长度为L的字符串。 add S1 S2:判断S1

小勇工作室 1236

Rust 与 C/C++:Rust 比 C/C++ 更好还是只是“技能问题”?

对于许多嵌入式系统开发人员而言,的崛起似乎掀起了一股不小的浪潮,特别是在相较于传统的语言,Rust的“内存安全”优势让人眼前一亮。然而,是否可以将Rust作为C/C++的替代品?或者说,Rust是否真的比C/C++更好,抑或它只是一个“技能问题”呢?在嵌入式开发的领域,我观察到,尽管Rust在一些高性能、内存安全敏感的场景中受到了广泛推崇,但它在实际应用中的普及度,特别是在嵌入式领域,依然有限。今天,我会从多个角度探讨这个问题,并且分享一些对于Rust、C/C++以及嵌入式系统开发的个人见解。

qq_63315166的博客 1300

AXI4接口说明

ACLK:全局AXI接口时钟输入(建议与系统时钟保持一致)ARESET_n:全局AXI接口复位信号,低电平有效。PS:在HBM AXI接口应用中,此复位端口仅应在数据传输开始前使用。若在传输开始后使用,会导致AXI接口与内存控制器失步(out-of-sync)。当开关启用时,IP核会将所有ARESET_n引脚内部连接在一起——因为内存作为一个整体工作。

rhtul的博客 1522

C ++ STL——string

1.C++ String 提供了一系列的字符串操作函数 例如:查找函数,拷贝函数,删除参数,替换replace,插入insert 2.string 的构造函数 默认的构造函数: string ();//构造一个空的字符串string s1 拷贝构造函数: string(const string& str)【构造一个与str一样的string , for example s...

weixin_42145502的博客 464

GD32F303标准库开发:Keil5新建GD32标准库工程

GD32F303标准库开发:Keil5新建GD32标准库工程

MQ0522的博客 8901

C++ STL string字符串详解和使用方法

头文件<string> … 操作 … string操作的实参 … 构造函数和析构函数 注意: 你不能以一个单字符初始化某字符串,但是可以这样做: string a('a');//错误 string b(1, 'a');//正确 string c({ 'a' });//正确 表示存在一个从const char* 到string的自动类型转换,但不存在一个从char到s...

qq_44800780的博客 2813

【行为决策模块项目实战】解耦控制--多控制器管理与切换的方法(附C++代码)

[请添加图片描述](https://img-blog.csdnimg.cn/c11300d9e4fe421e9070f474a468d1db.jpeg)本文先对多控制器管理与切换的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容VERTICAL_VEL, //垂直速度PID控制器VERTICAL_POS, //垂直位置PID控制器HORIZONTAL, //水平速度PID控制器YAW, //航向角yaw位置逻辑控制器。

qq_35635374的博客 1211

一篇文章认识《双目立体视觉》

双目立体视觉,由两个摄像头组成,像人的眼睛能看到三维的物体,具有深度的信息;单目视觉只能看到二维的物体。 1)双目摄像头 2)双目相机基线 3)打开双目摄像头 4)双目测距 视差disparity、 极线约束、 极线校正/立体校正、 a.双目标定 b.双目矫正 c.立体匹配 d.双目测距(三角测量) e.测距效果 立体视觉方法评测网站

黎国溥 7958

C++ STL string的输出

代码如下:#include &lt;iostream&gt; #include &lt;string&gt; //要与c语言里面的#include &lt;string.h&gt;区分 using namespace std; int main(){ string str("abcdefg"); cout &lt;&lt; str &lt;&lt; endl; cout &lt;&l

IT1995的博客 1万+

YOLOv12改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1778

CCF- CSP 201509-3 模板生成系统 STL+字符串处理 满分题解

【代码】CCF- CSP 201509-3 模板生成系统 STL+字符串处理 满分题解。

只须一笑不须愁X的博客 543

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C++常用STL库详细总结

适用于竞赛(ACM,蓝桥杯等)的STL库,作为库函数如果用的好,半小时的代码可以在几分钟内搞定。

墨海灬流弈的博客 4347

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

关于最近使用stl的一些感受

       最近用stl重写来原来的一个处理xml数据的类,感觉效率很高,比原来用MFC实现的简单了很多,特别是一些关于内存的处理,以前用mfc的时候,需要自己处理好内存的管理,如果不小心的话,那么就会出问题,而这些东西在stl里面都是很好处理的,使用标准的容器,将这些工作都交给模板去处理,大大减少了工作量。特别是stl的模板比mfc的好很多,如在使用字符串映射表时,stl允许字符串映射到任意对

生活时时更新 889

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C++常用STL讲解

关于STL(标准模板库) Standard Template Library,缩写:STL STL是一个C++软件库,里面包含算法(algorithms)、容器(containers)、函数(functions)、迭代器(iterators) C语言版本 #include<stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0; } C++版本 #

折叠伞的博客 5982

C++之STL前序

可以直接引入c语言头文件,虽然c语言中大多数头文件在c++中依然可以使用,但是推荐的方法是在c头文件之前加一个小写的c字母,然后去掉.h后缀,比如变为如果采用c语言方式考虑,相对来说就会比较复杂,因为c语言没有直接对字符串进行比如分割的函数,同时数据输入也比较麻烦,利用fgets来输入,输入之后怎么从一个字符串中分离出整数,不好整,你如果用getchar(),也不好做,比如输入456,getchar只会去得到4。而且在结构体里面,除了有变量之外,还可以有函数。

Pxx520Tangtian的博客 297

【C++】STL实现string

#include <iostream> using namespace std; #include <assert.h> namespace test { class string { public: typedef char* iterator; public: // 构造 string(const char* str = "") { if (nullptr == str) str = ""; _size = strlen(str)

金金金金金的博客 190

ACM模板(满注释模板!)

转自:https://fanfansann.blog.youkuaiyun.com/article/details/105493218 目录 F o r e w o r d ForewordForeword T e x t P a r t Text\ PartTextPart 一、S T L STLSTL标准模版库 二、动态规划 {\ \ \ }d y n a m i c p r o g r a m m i n g dynamic\ programmingdynamicprogr...

雲泥有別 尘亦生辉 1301

关于MFC和STL的使用

问题:     我在几个不同的地方读过有关STL的内容,但还是不知道在我的应用程序中到底是用STL还是用MFC?我的程序也处理string,vectors等东西。使用STL和MFC到底有什么不同? 解答:     要回答“我应该使用哪一个?”这样的问题,答案几乎都一

郁闷阳光的专栏 762

利用C++ STL 对多个字符串进行查询、排序和统计等

题目1: 有以下字符串: “www.uestc.edu.cn” ,“www.codeproject.com”,“www.cnki.net”,“www.163.com”,“www.taobao.com”, “www.baidu.com”.将以上6个字符串装入vector容器中,采用某一种STL排序算法,对这6个字符串进行排序后输出; 程序清单:  #include&lt;iostream&gt...

ArthurCaoMH的博客 1669

【C++入门到精通】C++入门 —— string类(STL)

本文以STL(Standard Template Library)和string类为主题,介绍了STL的概念、内容和使用前提。针对string类,详细探讨了它的定义、特点和常见操作,包括构造和初始化、字符串大小和容量、字符访问和修改、字符串连接和拼接、子串操作、字符串比较、字符串修改、获取字符的ASCII码,以及字符串大小写转换等。通过这些内容,读者将了解STL和string类的基本概念并掌握其常用操作,从而更有效地处理和操作字符串。

Yawesh的博客 1425

C++ 标准库与 STL

这些是现代 C++ 编程中非常重要的组件。STL 的核心思想是通过模板来提供通用数据结构和算法,以减少代码冗余并增强代码的可重用性。(Standard Template Library,标准模板库)主要提供了。包含了 STL,但除了 STL 提供的部分,它还包括了。:用于遍历容器中的元素,如。

weixin_51456835的博客 312

浅谈C++|STL之string篇

总的来说,C++的string类提供了一种安全、高效的方式来处理字符串。如果你还在使用C风格的字符串,我强烈建议你尝试使用string类,我相信你会喜欢上它的。它支持许多用于处理字符串的操作,如连接字符串、比较字符串、查找子字符串、替换子字符串等。C++标准模板库(STL)中的string类是一个非常重要的组成部分,它为字符串处理提供了强大的功能。这只是string类的一部分功能,实际上,string类还提供了更多的成员函数和操作符,使得我们在处理字符串时更加方便。运算符来比较两个字符串。

高性价比服务器就选:蓝易云 308

杭电OJ2072 详解 STL模板库

在做这道题之前我没有接触过C++相关的的知识,如果你也和我一样,请先去看看关于C++标准模版库方面的知识 这个真的很简单,我大概花了两个小时就搞懂了这些知识,推荐算法笔记第六章!!! 2072 #include<string> //这些库函数都是标准模板,不要被吓到了,不懂的找点资料看一看 #include<iostream> #include<s...

weixin_44433678的博客 373
上一篇: 【SOJ】超大背包 (回溯法经典应用)
下一篇: 【机试】最小面积子矩阵
coderwait
博客等级 码龄9年 20粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值