C++ string容器,cha*

news2024/11/15 23:43:19

目录

1.string基本概念

 2.string构造函数,char*

3.string赋值操作

4.string字符串拼接+=,append

5.string查找和替换,find,replace

 6.string字符串比较,compare

7.string字符存取[].at,取,修改单个字符,size返回字符串长度

8.string插入和删除,insert,erase

 9.string截取子串,substr

1.string基本概念

 2.string构造函数,char*

#include<iostream>
using namespace std;

//string构造函数
void test01()
{
	string s1;//默认构造,无参构造,string(),创建一个空字符串

	string s = "abcd";
	cout <<"s= "<< s << endl;

	const char* str = "hello world";
	//C语言风格的字符串初始化c++中的string
	string s2(str);//string(const char *)
	cout << "s2= " << s2 << endl;

	string s3(s2);//拷贝构造,用string对象初始化另一个string对象
	cout << "s3= " << s3 << endl;

	string s4(10, 'a');//用10个a组成一个字符串
	cout << "s4= " << s4 << endl;
}
int main()
{
	test01();




	/*
	char* p = "abcef";//是将字符串a的地址给了p
	
	*p = 'W';
	"abcdf" 字符串是常量,常量不可以更改
	所以报错
	*/
	cout << "__________________________" << endl;
	const char* p = "abcef";
	//常量指针,内容不可更改,指向可以更改
	p = "fg";
	cout << p << endl;
	//为什么不是*p,是将字符串a的地址给了p,然后一直往后读
	//读到\0为止,输出*p会输出a
	system("pause");//按任意键继续
	return 0;
}

3.string赋值操作

#include<iostream>
using namespace std;

//string赋值操作
void test01()
{
	string str1;
	//char*类型字符串 赋值给当前字符串
	str1 = "hello world";//用等号的方法做一个赋值操作
	cout << "str1= " << str1 << endl;

	string str11="zyq";
	//char*类型字符串 赋值给当前字符串
	cout << "str11= " << str11 << endl;

	string str2;
	//把字符串str1赋值给当前的字符串
	str2 = str1;
	cout << "str2= " << str2 << endl;

	string str3;
	//单个字符给字符串赋值,单个字符也可以看成字符串
	str3 = 'a';
	cout << "str3= " << str3 << endl;

	/*
	报错
	string str33='a';
	//单个字符给字符串赋值,单个字符也可以看成字符串
	cout << "str33= " << str33 << endl;
	*/
	

	string str4;
	//char*类型字符串 赋值给当前字符串
	str4.assign("hello C++");
	cout << "str4= " << str4 << endl;

	string str5;
	//把字符串s的前n(包括n)个字符付给当前字符串
	str5.assign("hello C++",5);
	cout << "str5= " << str5 << endl;//输出hello

	string str6;
	//把字符串s付给当前字符
	str6.assign(str5);
	cout << "str6= " << str6 << endl;//输出hello

	string str7;
	//用10个字符w组成的字符串给当前字符串赋值
	str7.assign(10, 'w');
	cout << "str7= " << str7 << endl;
}
int main()
{
	test01();




	
	system("pause");//按任意键继续
	return 0;
}

一般用等号的方式进行赋值。

4.string字符串拼接+=,append

#include<iostream>
using namespace std;

//string字符串拼接

void test01()
{
	string str1 = "我";
	//追加字符串,const char*
	str1 += "爱你";
	cout << "str1= " << str1 << endl;
	//追加字符串 string& str
	string str2 = " love is love";
	str1 += str2;
	cout << "str1= " << str1 << endl;

	//追加字符 const char c
	str1 += '!';
	cout << "str1= " << str1 << endl;

	string str3 = "I";
	//const char* s
	str3.append(" Love");
	cout << "str3= " << str3 << endl;
	//const char* s,的前n个
	str3.append(" You abcd",4);
	cout << "str3= " << str3 << endl;
	//追加字符串 string& str
	str3.append(str2);
	cout << "str3= " << str3 << endl;
	//从pos开始 截取n个字符
	string str4 = "abcdef";
	string str5 = "ghopq";
	str4.append(str5, 2, 3);
	cout << "str4= " << str4 << endl;

}
int main()
{
	test01();

	system("pause");//按任意键继续
	return 0;
}

5.string查找和替换,find,replace

#include<iostream>
using namespace std;

//string字符串查找和替换

//1.查找
void test01()
{
	string str1 = "abcdabc";
	//返回要查找的字符串在str1中第一次出现的位置,查找不到,返回-1
	int pos1 = str1.find("de");
	int pos2 = str1.find("ab");
	cout << "pos1 = " << pos1 << endl;//输出:-1
	cout << "pos2 = " << pos2 << endl;//输出:0

	//rfind
	//rfind从右往左找,计算下标还是从左往右
	//即rfind是输出要查找的字符串在str1中最后一次出现的位置
	int pos3 = str1.rfind("de");
	int pos4 = str1.rfind("ab");
	cout << "pos3 = " << pos3 << endl;//输出:-1
	cout << "pos4 = " << pos4 << endl;//输出:4
}

//2.替换
void test02()
{
	string str1 = "abcdefg";
	//从1号位置起的3个字符替换为字符串"1111"
	str1.replace(1, 3, "1111");
	cout << "str1 = " << str1 << endl;//输出str1 = a1111efg
}
int main()
{
	test01();
	test02();
	system("pause");//按任意键继续
	return 0;
}

 6.string字符串比较,compare

#include<iostream>
using namespace std;

//字符串比较

void test01()
{
	string str1 = "hello";
	string str2 = "xello";
	if (str1.compare(str2) == 0)
	{
		cout << "str1 等于 str2" << endl;
	}
	else if (str1.compare(str2) > 0)
	{
		cout << "str1 大于 str2" << endl;
	}
	else if (str1.compare(str2) < 0)
	{
		//x>h
		cout << "str1 小于 str2" << endl;
	}
}
int main()
{
	test01();
	system("pause");//按任意键继续
	return 0;
}

主要用于判断两个字符串是否相等,判断谁大谁小意义不大。

7.string字符存取[].at,取,修改单个字符,size返回字符串长度

#include<iostream>
using namespace std;

//字符串存取

void test01()
{
	string str = "hello";
	cout << "str = " << str << endl;
	//1.通过[]访问单个字符
	//size返回字符串长度
	for (int i = 0; i < str.size(); i++)
	{
		cout << str[i] << " ";
	}
	cout << endl;
	//2.通过at方式访问单个字符
	for (int i = 0; i < str.size(); i++)
	{
		cout << str.at(i)<< " ";
	}
	cout << endl;

	//修改单个字符
	str[0] = 'x';
	cout << "str = " << str << endl;//输出:xello
	str.at(1) = 'x';
	cout << "str = " << str << endl;//输出:xxllo
}
int main()
{
	test01();
	system("pause");//按任意键继续
	return 0;
}

8.string插入和删除,insert,erase

 9.string截取子串,substr

#include<iostream>
using namespace std;

//string截取子串

void test01()
{
	string str = "abcdef";

	string subStr = str.substr(1, 3);
	cout << "subStr = " << subStr << endl;//subStr = bcd
}
//实用操作
void test02()
{
	string email = "zhangsan@sina.com";
	//从邮件地址中 获取 用户名信息
	int pos= email.find('@');
	string use_name = email.substr(0, pos);
	cout << "use_name = " << use_name << endl;// use_name = zhangsan

}
int main()
{
	test01();
	test02();
	system("pause");//按任意键继续
	return 0;
}

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

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

相关文章

数学建模学习笔记(13)分类模型

分类模型分类问题的基本概念逻辑斯蒂回归&#xff08;Logistic&#xff09;Fisher线性判别分析多分类问题的SPSS求解分类问题的基本概念 分类问题概述&#xff1a;对于给定的一个对象&#xff0c;根据其特征将其划分到多个已给定的类别中的一个。 二分类和多分类&#xff1a;…

题目:两数之和

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录描述描述 方式1:暴力遍历 public static int[] twoSum(int[] nums, int target) {int i 0;int j 1;int[] result new int[2];for(int m i;m<nums.length-1;m){…

13.3nm粒径水溶性Cds/CdTe-PAA-P4VP/BSA的制备方法

13.3nm粒径水溶性Cds/CdTe-PAA-P4VP/BSA的制备方法今天小编分享量子点偶联聚合物&#xff0c;一起看看吧&#xff1a;Cds/CdTe-PAA-P4VP/BSA的制备过程&#xff1a;称取86.5mgCdCl2于三口瓶中&#xff0c;加入295mL二次水&#xff08;考虑到在调pH值时会增加溶液的体积&#xf…

(14)工业界推荐系统-小红书推荐场景及内部实践【重排】

&#xff08;1&#xff09;工业界推荐系统-小红书推荐场景及内部实践【业务指标、链路、ItemCF】 &#xff08;2&#xff09;工业界推荐系统-小红书推荐场景及内部实践【UserCF、离线特征处理】 &#xff08;3&#xff09;工业界推荐系统-小红书推荐场景及内部实践【矩阵补充、…

目前音质最好的蓝牙耳机有哪些?2023公认音质最好的蓝牙耳机推荐

随着技术的进步&#xff0c;蓝牙耳机的功能也越来越多样&#xff0c;人们在选择蓝牙耳机时也更能够“精准”地搜索关键词&#xff0c;进行选择。不少人很注重蓝牙耳机的音质&#xff0c;最近看到不少人问&#xff0c;目前音质最好的蓝牙耳机有哪些&#xff1f;下面&#xff0c;…

如何录制视频课程?右下角带人脸的视频怎么录制

现如今网络十分发达&#xff0c;想学习知识也十分简单&#xff0c;只要在网上搜索你想要学习的内容&#xff0c;就会出现许多相关的视频课程。那您知道如何录制视频课程吗&#xff1f;在录制时如何录入人脸&#xff1f;其实一款专业的录屏软件就能轻松搞定。今天小编教大家使用…

分析一下spring循环依赖

1.为什么循环依赖是个问题 spring 中 Bean 的创建一定是经历创建对象和依赖注入两个步骤 假设对象 Bean_A 和 Bean_B 存在循环依赖&#xff0c;如下图 1.Bean_A 创建的时候需要 Bean_B&#xff0c;就会创建Bean_B 2.Bean_B创建的时候又需要Bean_A&#xff0c;又去创建Bean_A 3…

原创 140 多篇,是时候来篇总结了

光阴似剪&#xff0c;日月如梭。不知不觉&#xff0c;从 17 年广工毕业到现在&#xff0c;已经毕业 5 年多了。 从大四开始写博客&#xff0c;有原创 110 多篇, 也获得了 CSDN 博客专家称号和掘金优秀作者称号。 回想这五年来的程序员生涯&#xff0c;谈不上满意&#xff0c;也…

方块状量子点CdTe-Tf包裹转铁蛋白/球形5nmCdTe-NGAL的制备方法

方块状羧基/氨基化量子点CdTe-Tf包裹转铁蛋白/球形5nmCdTe-NGAL的制备方法今天小编分享CdTe-Tf包裹转铁蛋白&#xff0c;一起看看吧&#xff1a;CdTe-Tf包裹转铁蛋白的制备过程:在充满氦气的无水无氧的手套箱中&#xff0c;0.125 g (5.42510-4 mol) Cd(Ac)2加入到三口瓶中的10 …

原生微信小程序转化uniapp项目的神操作

前言 可能有些朋友只知道能将uniapp编译成微信小程序&#xff0c;但是没想到原生微信小程序也能编译成uniapp项目&#xff0c;这里推荐一款【miniprogram-to-uniapp】小程序转换工具插件 原理 核心是使用Babel获取AST&#xff08;词法分析)&#xff0c;然后或使用Babel自带函…

如何实现高质量的系统数据对接/API接口整合集成方案?

我们建立一个数字化系统可能会有跟别的系统进行数据对接的需要&#xff0c;而别人的数字化系统也有可能需要跟我们的系统进行数据对接&#xff0c;也可能我们开发了不同的网站&#xff0c;网站小应用之间需要进行数据对接。那么数据对接应该如何操作呢&#xff1f;怎么才能更好…

数据分析:SQL和Python

SQL 统计数据概况&#xff1a;计算样本总数、商家总数、用户总数、消费总数、领券总数等 selectcount(User_id) as 样本总数,count(distinct Merchant_id) as 商家总数,count(distinct User_id) as 用户总数,count(Date) as 消费总数,count(Date_received) as 领券总数,(sele…

高级Spring之Aware 接口

Aware 接口功能阐述&#xff1a; Aware 接口提供了一种【内置】 的注入手段&#xff0c;例如 a.BeanNameAware 注入 bean 的名字b.BeanFactoryAware 注入 BeanFactory 容器 c.ApplicationContextAware 注入 ApplicationContext 容器 d.EmbeddedValueResolverAware 注入 ${} 解…

力扣并查集

目录 1&#xff0c;路径压缩查找 323. 无向图中连通分量的数目 990. 等式方程的可满足性 200. 岛屿数量 419. 甲板上的战舰 695. 岛屿的最大面积 733. 图像渲染 1992. 找到所有的农场组 947. 移除最多的同行或同列石头 1020. 飞地的数量 547. 省份数量 827. 最大人…

浅谈对 Binder 的理解

文章目录Binder 是干嘛的&#xff1f;Binder 的意义binder 的通信架构如何启动 binder 机制binder 通信binder 驱动的分层架构图需要了解的知识 binder 是干嘛的binder 的存在意义是怎样的Android 为什么选择 binder 作为主要的 ipc 通信机制&#xff1f;binder 的架构 Binde…

Vue 3 介绍

Vue 3 介绍Vue3 动机 和 新特性Vite 的使用为什么选 Vite为什么要学习 vue 3Vue是国内最火的前端框架Vue 3 于 2022 年 2 月 7 日星期一成为新的默认版本&#xff01;Vue3性能更高&#xff0c;体积更小Vue3.0在经过一年的迭代后&#xff0c;越来越好用 目前已支持 vue3 的UI组…

Python简介安装与PyCharm安装使用

一、Python简介 Python官方文档&#xff1a;https://docs.python.org/zh-cn/3/ Python 3.x 已经将 UTF-8 作为默认的源文件编码格式。 1、Python简介 Python 是一门开源免费、通用型的脚本编程语言&#xff0c;它上手简单&#xff0c;功能强大&#xff0c;坚持「极简主义」&am…

Visual Studio Code (VS Code) - 列块编辑与查找

Visual Studio Code (VS Code) - 列块编辑与查找1. 列块选择 Shift Alt 鼠标左键&#xff0c;进行列编辑&#xff0c;批量增删改。 在选定位置按下滚轮键 (鼠标中键) 不放&#xff0c;移动鼠标完成多列选择。 2. 页面双列布局 查看 -> 编辑器布局 -> 双列 3. 查…

linux使用ZLMediaKit搭建rtsp服务器

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 致敬rtsp 服务器搭建_音视频开发老马的博客-CSDN博客_rtsp服务器 这里是参考上面链接的介绍再进行一些自己遇到的问题的补充。 一…

一种化学荧光探针945928-17-6,TAMRA alkyne,5-isomer,四甲基罗丹明-炔基

【中文名称】5-四甲基罗丹明-炔基【英文名称】 TAMRA alkyne,5-isomer【CAS】945928-17-6【分子式】C28H25N3O4【分子量】467.53【纯度标准】95%【包装规格】5mg&#xff0c;10mg&#xff0c;25mg【是否接受定制】可进行定制&#xff0c;定制时间周期上面可以和我们进行沟通【外…