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 ...
随机推荐
- ProjectEuler 005题
题目: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any ...
- OpenCV 传统分割测试
github官网源文件:https://github.com/opencv/opencv/tree/master/samples/python 最好是先克隆整个仓库下来,再测试里面的:floodfil ...
- AI 常见术语总结
BN(Batch-normalization)在一层的输出上计算所有特征映射的均值和标准差,并且使用这些值规范化它们的响应.因此使得所有神经图(neural maps)在同样范围有响应,而且是零均 ...
- netty系列之:搭建自己的下载文件服务器
目录 简介 文件的content-type 客户端缓存文件 其他HTTP中常用的处理 文件内容展示处理 文件传输进度 总结 简介 上一篇文章我们学习了如何在netty中搭建一个HTTP服务器,讨论了如 ...
- 786. 第k个数
题目传送门 一.理解感悟 1.这是快速排序模板的练习题. 2.不一样的地方在于它可以利用快排模板,但却不需要真的把所有数据排序完成,每次一分为二后,只关心自己所有的那一半,就是可以节约一半的递归. 3 ...
- linux centos7 控制台下的一些操作
2021-08-20一. 快捷键1. Ctrl+d 退出当前用户2. Ctrl+Insert 复制3. Shift+Insert 粘贴4. Ctrl+l 清屏二. 基础命令1 ...
- 【SpringMVC】视图
SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户 SpringMVC视图的种类很多,默认有转发视图和重定向视图 当工程引入jstl的依赖,转发视图会自动 ...
- linq 集合按照多列进行distinct
List<TaskBatch> sourceList = (from c in BatchCollecion ...
- Vue3.x全家桶+vite+TS-搭建Vue3.x项目
目录 一.搭建基础项目 1.vite创建项目 3.运行项目 2.环境变量设置介绍 vite配置多环境打包 二.配置Router 1.安装路由 2.配置路由 3.引入 三.配置Vuex 1.安装vuex ...
- scrum项目冲刺_day02总结
摘要:今日完成任务. 1.appUI页面完成 2.图像识别正在进行 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能 2.语音识别功能 3.垃圾搜索功能 4.相关新闻爬取 三. ...