C++ 字符数组和String类
C++ 字符数组和String类
开发工具与关键技术:C++、VisualStudio
作者:何任贤
撰写时间:2019年04月10日
C++中的字符数组和C#的字符串类型都是用来存储字符串的,字符数组和string类有什么关系呢?第一它们有一个共同的,它们都可以存储字符串,第二就是它们的区别,string在C#是代表字符串类型,都是在C++中则是一个类,一个封装类,C++原本是没有String的,为什么C++后来加入String类呢?
我个人认为是因为字符数组在操作字符串上不够灵活所以后来加入String类,来优化C++对字符串的处理,之所以我这么认为是因为,我是先学C#再学C++,所以在C#使用string类型操作字符串确实是比C++中字符数组操作字符串要方便,举一个简单的例子,比如我在C#可以直接对string类型进行赋值而C++的字符数组不可以,但是C++的string类可以,我发现C#的string类型可以做到的,C++的string类也基本可以。
那么我们回归正题,字符数组和string类,首先我们知道它们都可以操作字符串的,下面是一个简单的例子,用于证明它们都可以操作字符串。
#include
#include
using namespace std;
void main()
{
char a[10];
string b;
cin >> a >> b;
cout << “字符数组:” << a << “\n” << “string类:” << b << “\n”;
}
那么它们既然都可以操作字符串,那么它们又有什么不同之处呢?第一个不同之处是字符数组是一个数组,而string类是一个类,一个封装类。那么它们还有什么不同呢?自然是在类型转换,因为我们把同一个字或符号,赋予不同的类型就有不同的属性,同样也代表它们进行不同操作,例如说阿拉伯数字的0和1,它们就可以有多种类型,比如整型、布尔型、字符型也可以是字符串类型等等。
那么我把0和1来进行类型转换,我们看看用字符数组的0和1,和string类的0和1在转换中有什么不同,那么我们先用字符数组的,下面就是字符数组的转换和输出。
#include
#include
void main()
{
char a[] = {1};
int b;
bool c;
char d;
b = a[0];
c = a[0];
d = a[0];
cout << “整型:” << b << " " << “布尔型:” << c
<< " " << “字符型:” << d << “\n”;
}
通过输出我们知道字符数组可以通过下标把值直接赋给整型、布尔型,而不能直接赋给字符型,虽然编译器没有报错,也可以输出,但是输出的结果不是我们想要的,至于字符数组要怎么通过下标把值赋给字符型这里就不说了。
那么我们通过上面的可以知道字符数组在转换类型和赋值上不如C#的string类型,而且它还有一个缺点就是它的长度从声明开始就固定了,那么一旦超过它的长度系统就会直接报错,当然这也是一个优点,就是我们可以根据自己需求来决定使用多大空间。
那么string类是不是和C#string类型一样呢?既然是一个类那么和字符数组的转换类型有什么不同,下面是string类的类型转换和输出。
#include
#include
using namespace std;
void main()
{
string a = “1”;
int b;
bool c;
char d;
b = atoi(data(a));
c = data(a);
d = atoi(data(a));
cout << “整型:” << b << " " << “布尔型:” << c
<< " " << “字符型:” << d << “\n”;
}
虽然得出来的结果和上面的一样,但是转换不一样,我们可以看到的是我在把string类转换成int类型时用了两个函数一个是atoi()一个是data(),atoi()函数是把charl类型转换成int类型,而data()函数则是把string类转换成char类型,之所以用这两个是因为没有找到直接把string类转换成int类型的转换函数,而atoi()函数则是因为赋值符不能把通过data()函数转换的字符,赋给int类型。
至于布尔型则不需要,而字符型即使通过这两个函数转换,但是输出的结果也不是我们想要的。
这就是字符数组和string类转换成其他类型的不同之处。虽然转换方式不是我们选择使用string类和字符数组的重要因素,但也是其中之一。
我们说过字符数组和string类转换其他类型,那么我们现在在看看int类型转换成字符数组和string类,我们看看就行。
#include
#include
using namespace std;
void main()
{
string a;
int b = 1;
a = to_string(b);
cout<< “string类:” << a << “\n”;
}
这是int类型转string类的,虽然不用to_string()函数也不会报错,但是却不会得到我们想要的结果。
void main()
{
char a[3];
int b = 1;
a[0] = b;
cout<< “string类:” << a[0] << “\n”;
}
这是int类型转字符数组的,显然输出并不是我们想要的,但是字符数组无法使用to_string()函数转换类型。
C++ 字符数组和String类相关推荐
- java stringbuffer数组_Java中字符数组、String类、StringBuffer三者之间相互转换
一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...
- java的常用引用类、数组、String类
java的常用引用类.数组.String类 1. 常用引用类 1.1 Scanner 一个简单的文本扫描器类. 使用: //创建扫描器对象 Scanner sc = new Scanner(Syste ...
- java进阶第二讲-数组、String类
java进阶第二讲-数组.String类 1 回顾一下Object Object中的方法:public native int hashCode();带有native关键字的方法调用的是底层C++的dl ...
- 小白学C++ L11 数组和字符数组及string 类型
数组 C++使用数组来实现一次性声明很多变量的功能,具有以下特性: 创建后的数组大小固定 同一数组中的元素类型相同 是一系列数据顺序集合 数组如何声明 在C++中声明数组时,需要指定元素类型.数组名称 ...
- c#string倒数第二位插入字符_c#string倒数第二位插入字符_C#利用String类的IndexOf、LastIndexOf、...
一.String.IndexOf String.IndexOf 方法 (Char, Int32, Int32) 报告指定字符在此实例中的第一个匹配项的索引(从0开始).搜索从指定字符位置开始,并检查指 ...
- java char数组转string数组_Java中char数组(字符数组)与字符串String类型的转换方法...
本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordFie ...
- 【Java5】String类,StringBuilder类,ArrayList类,Object类(toString,equals,hashCode)
文章目录 1.String类:字符串常量在Java中不属于基本数据类型, 而是引用/类类型 1.1 使用:new String(...) 1.2 判断:equals函数是用来比较两个对象是否相等 1. ...
- 11.28 String类
两种实例化方式 public class Demo{public static void main(String[] args){String stra = "hello world&quo ...
- 【JavaSE】String类总结,StringBuilder、StringBuffer、String的区别讲解
文章目录 String对象的构造 String类的一些常用方法 求字符串的长度 字符串判空 字符串对象的比较 字符串对象的查找 字符串对象的转化 字符串对象的截取 字符串对象的替换 字符串对象的拆分 ...
最新文章
- Linux13-bash脚本编程基础及配置文件
- VS Code的7个开源替代品
- ORACLE 字符串函数用法(转载)
- SpringBoot 后台管理系统
- Linux下Poppler源码编译安装
- 双向队列(STL做法)
- Ubuntu18.04 可用字体库
- 来吧学学.Net Core之项目文件简介及配置文件与IOC的使用
- ElasticSearch 索引、更新和删除数据
- 使用WPF创建画图箭头
- c#使用SHA256算法实现对文件的加密和解密
- Android Studio:Support Library依赖包的版本号
- 改变win7登陆时的界面
- Java解析cron表达式
- 微商引流产品有哪些?做微商如何引流以及推广产品?
- Detected outdated SDK Tools version 0.0.0 when the min version is XXX
- Java基础篇--设计模式
- sql注入进阶/user-agent/基于报错的注入/保姆级教程/一看就会/
- 实用解析dmp文件内容
- 2022电工杯A题B题高质量保奖代码思路合集