C++中string和char字符串的异同与使用方法
C++中string和char声明字符串的异同和使用
- string类
- 必须在头文件中包含
<string> - 隐藏了字符串的数组性质,可以像处理普通变量那样处理字符串
- string类位于名称空间std中
- string是一个类,创建出的是一个对象
- 必须在头文件中包含
操作(赋值,拼接,附加)
- 不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象
char charr1[20];
char charr2[20] = "jaguar";
charr1 = charr2;//此操作不合法(相当于两个首地址的赋值操作)
string str1;
string str2 = "panther";
str1 = str2;//此操作合法
- 可以使用连接运算符"+"将两个string对象合并起来,还可以用"+="将字符串附加到string对象的末尾
- 此处的加号起连接作用,不是做加法的作用
- "+"在第一次碰到string对象之后起连接作用,之前作数字间的加法
string str3;
str3 = str1 + str2;//str3是 str1的内容后紧跟str2的内容 的合并数组。
//对应char字符串的strcpy(charr3,charr1);strcat(charr3,charr2);
str1 += str2;//str1后紧跟str2的内容
- 确定两种字符串中字符数的方法
- char类型字符串可用头文件
<cstring>中的strlen(字符串名)函数,该函数返回该字符串包含的字符数,不包含'\0' - string创建的对象可以用
对象名.size()来确定。string str;,str是一个string对象,size()是string类的一个方法,方法是一个函数
- char类型字符串可用头文件
输入输出 I/O
string字符串在未被初始化前长度被自动设置为0,而char类型的字符串第一个'\0'出现的位置是不确定的,因此,strlen()获取的长度不确定,甚至可以大于中括号中给定的长度
可以用cin>>来讲输入存储到string对象中
可以使用cout<<来显示string对象
每次读取一行而不是一个单词时使用的句法不同
读入
将一行输入读入数组:
cin.getline(字符数组名,数组长度)。这个getline()为istream类中的一个类方法,使用第二个参数避免超过数组的长度
将一行输入读取到string对象中:
getline(cin,string创建的对象名)。可见,这个getline()没有句点,表明这个getline()不是类方法,它将cin作为参数,指出到哪里去查找输入,另外,也没有指出字符串长度的参数,因为string对象将根据字符串的长度自己调整自己的大小
istream类中,有处理double,int,和其他基本元素的类方法,但没有处理string对象的类方法
cin>>输入一个string对象可行是因为使用string类的一个友元函数
C++中string和char字符串的异同与使用方法的更多相关文章
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30; int y=30; x==y; //true 基本数据类型 简单类型(基本类型) bo ...
- C++ 中 string和char* 的区别
C++ 中 string和char* 的区别 1.定义: string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便. char*:char *是一个指针,可以指向一个字符 ...
- C++中string、char *、char[]的转换
头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会.现在从网上找了点资料,看了看,知道点东西了. 一.string转char*. 主要有三种方法可以将str转换为char*类型,分别是:da ...
- C# 中如何判断某个字符串是否为空的方法
C# 中如何判断某个字符串是否为空的方法 分享了三个方法来判断字符串是否为空 引自:http://www.itokit.com/2012/0724/74618.html 1. 三种常用的字符串判空串方 ...
- Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?
百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放 ...
- C++中string转换为char*类型返回后乱码问题
问题来源: 在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root) 其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使 ...
- Java中String直接赋字符串和new String的区别
解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
- Java中String直接赋字符串和new String的区别(面试常考)
摘取自:https://www.cnblogs.com/guozhenqiang/p/5633269.html 解析Java中的String对象的数据类型 1. String是一个对象. 因为对象的 ...
- 100、Java中String类之字符串转为大写
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
随机推荐
- 在vue中实现扫描二维码跳转页面
文字少的博文不允许发布到网站首页.文字少的博文不允许发布到网站首页.文字少的博文不允许发布到网站首页.文字少的博文不允许发布到网站首页.文字少的博文不允许发布到网站首页.文字少的博文不允许发布到网站首 ...
- 用Java8把List转为Map
1 import com.yang.test.User; 2 3 import javax.jws.soap.SOAPBinding; 4 import java.util.*; 5 import j ...
- 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器
剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...
- 刷题-力扣-剑指 Offer 42. 连续子数组的最大和
剑指 Offer 42. 连续子数组的最大和 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de ...
- Spring Boot集成Redis集群(Cluster模式)
目录 集成jedis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 集成spring-data-redis 引入依赖 配置绑定 注册 获取redis客户端 使用 验证 异常处理 同样的, ...
- AndroidJetpack Fragment之Navigation和ViewPager2
新的Fragment导航方式:Navigation 1.创建若干个fragment 2.添加导航 1)新建Navigation:右键res文件夹,New->Android Resource Fi ...
- 🏆【Alibaba工具型技术系列】「EasyExcel技术专题」摒除OOM!让你的Excel操作变得更加优雅和安全
前提概要 针对于后端开发者而言的,作为报表的导入和导出是一个很基础且有很棘手的问题!之前常用的工具和方案大概有这么几种: JXL(Java Excel API 工具服务),此种只支持xls的文件格式, ...
- 20210803 noip29
考场 第一次在 hz 考试.害怕会困,但其实还好 看完题感觉不太难,估计有人 AK. T3 比较套路,没办法枚举黑点就从 LCA 处考虑,在一个点变成黑点时计算其他点和它的 LCA 的贡献,暴力跳父亲 ...
- Smooth
考场\(AC\),还是很开心的. 考虑这题让你干啥,就是给你一堆素数,然后让你用他们去构造数,求其中第\(k\)小的. 我们可以用系数累乘的方式,同时利用小根堆实现有序,加一个优化,就过了 ...
- Activiti 学习(三)—— Activiti 流程启动并完成
Activiti 流程启动 流程定义部署后,就可以通过工作流管理业务流程了,也就是说前文部署的出差申请流程可以使用了.针对该流程,启动一个流程表示发起一个新的出差申请单,这就相当于 java 类与 j ...