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类的一个方法,方法是一个函数

输入输出 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字符串的异同与使用方法的更多相关文章

  1. 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer

    1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30;        int y=30;         x==y;  //true 基本数据类型 简单类型(基本类型) bo ...

  2. C++ 中 string和char* 的区别

    C++ 中 string和char* 的区别 1.定义: string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便. char*:char *是一个指针,可以指向一个字符 ...

  3. C++中string、char *、char[]的转换

    头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会.现在从网上找了点资料,看了看,知道点东西了. 一.string转char*. 主要有三种方法可以将str转换为char*类型,分别是:da ...

  4. C# 中如何判断某个字符串是否为空的方法

    C# 中如何判断某个字符串是否为空的方法 分享了三个方法来判断字符串是否为空 引自:http://www.itokit.com/2012/0724/74618.html 1. 三种常用的字符串判空串方 ...

  5. Java中String直接赋字符串和new String的区别 如String str=new String("a")和String str = "a"有什么区别?

    百度的面试官问 String A="ABC"; String B=new String("ABC"); 这两个值,A,B 是否相等,如果都往HashSet里面放 ...

  6. C++中string转换为char*类型返回后乱码问题

    问题来源: 在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root)  其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使 ...

  7. Java中String直接赋字符串和new String的区别

    解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...

  8. Java中String直接赋字符串和new String的区别(面试常考)

    摘取自:https://www.cnblogs.com/guozhenqiang/p/5633269.html 解析Java中的String对象的数据类型 1. String是一个对象.  因为对象的 ...

  9. 100、Java中String类之字符串转为大写

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

随机推荐

  1. JDK 5.0新特性

    时间:2016-11-5 12:03 JDK5.0新特性    泛型.枚举.静态导入.自动拆装箱.增强for循环.可变参数1.Junit单元测试    测试的对象是类中的一个方法.    junit不 ...

  2. springboot静态资源路径制定

    spring.resources.static-location参数指定了Spring Boot-web项目中静态文件存放地址, 该参数默认设置为: classpath:/static, classp ...

  3. Python3-sqlalchemy-orm 创建关联表带外键并查询数据

    #-*-coding:utf-8-*- #__author__ = "logan.xu" import sqlalchemy from sqlalchemy import crea ...

  4. centos7 权限更改,所属用户及用户组更改

    2021-08-03 # 查看文件的权限 ll 第一个字符, "-" 表示是文件, "d" 表示是目录(directory) 后面 9 个字符每 3 个字符又作 ...

  5. Git最强总结!

    本文已经收录到Github仓库,欢迎大家围观.star.此仓库用于分享Java核心知识,包括Java基础.MySQL.SpringBoot.Mybatis.Redis.RabbitMQ等等,面试必备. ...

  6. MySQL数据完整性约束

    主键约束 主键可以是表中的某一列,也可以是表中的多个列所构成的一个组合:其中,由多个列组合而成的主键也称为复合主键.在MySQL中,主键列必须遵守以下规则. (1)每一个表只能定义一个主键. (2)唯 ...

  7. SpringMVC-源码-图解

  8. Tensorflow之TFRecord的原理和使用心得

    本文首发于微信公众号「对白的算法屋」 大家好,我是对白. 目前,越来越多的互联网公司内部都有自己的一套框架去训练模型,而模型训练时需要的数据则都保存在分布式文件系统(HDFS)上.Hive作为构建在H ...

  9. Spring Boot 入门系列(二十七)使用Spring Data JPA 自定义查询如此简单,完全不需要写SQL!

    前面讲了Spring Boot 整合Spring Boot JPA,实现JPA 的增.删.改.查的功能.JPA使用非常简单,只需继承JpaRepository ,无需任何数据访问层和sql语句即可实现 ...

  10. Docker Compose 实践及梳理

    Docker Compose 可以实现 Docker 容器集群的编排,可以通过 docker-compose.yml 文件,定义我们的服务及其需要的依赖,轻松地运行在测试.生产等环境 文档 Produ ...