浅谈char字符类型和string字符串类型

char和string 两者关系很微妙,因为都是字符,但是他们直接的联系却不是很多,这里我和大家聊聊字符的两大势力的相爱相杀。

char也就是字符型数据定义,string也就是字符串类型数据定义,乍一看他们很想,一个是字符一个是字符串,字符串不就是字符串起来得到的吗?但是事实上,字符串即是“字符”串起来也不是“字符”串起来,听起来是不是很奇怪,这里面的两个字符的意义其实是不一样的,第一个“字符”的意思是指一个单位的字形、类字形单位或符号的基本信息,而第二个“字符”的意思是字符类型。可能大家听得还是很糊涂,我帮大家捋一捋,我们现在要先弄清楚一点,char是字符类型,属于一个类,属于编程语言中的一个数据类型,而他和字符有区别,字符是什么?字符指的是一个基本信息单位,也就是说字符是一个数据,它可以是数字也可以是字母。

所以,char是一个可以用来存储字符数据的变量类型,而string就是一个存储一串字符数据的变量类型,他们的共同点就是他们都是变量类型,都是用来存储字符的。

我想这样说大家应该明白了,既然他们俩如此相像,也就免不了他们要常常互动了,不过在讲他们的交互之前,我要和大家再提一个概念,不过希望大家能先理清刚刚讲的再看,不然会越看越乱的。

下面我要说的就是字符数组,char[],他是一组char类变量组成的,也可以用来存储一串字符数据,和string的作用很是相像,但是本质是不一样的,他们应该是数组变量,一个是类变量,char[]很好理解,他就是一个数组,每个单元里面放一个字符数据,string则是一个整体,最后以字符’\0’,作为分隔标识,而且他还有很多类函数可以调用使用。

下面举个例子:

#include<iostream>
#include<string>
using namespace std;
void main()
{
	string Lyu;
	Lyu = "I love C++";
	cout << "字符串为:" + Lyu << endl;
	cout << "字符串的长度为:" << Lyu.length() << endl;
	cout << "是否为空:" << Lyu.empty() << endl << endl;		//若返回值为0,则指字符串不为空

	Lyu.append("!");			//字符串后追加一个!
	cout << "追加修改后的字符串为:" << Lyu << endl << endl;

	string Lyu_2;
	Lyu_2 = "I love too";
	Lyu.swap(Lyu_2);			//字符串数据交换
	cout << "交换修改后的字符串为:" << Lyu << endl << endl;

	int site;
	site = Lyu.find('l', 0);	//从0开始寻找出现l的位置并返回位置
	cout << "字符串中出现l的位置为:" << site << endl;
	site = Lyu.find("oo", 0);	//从0开始寻找出现oo的位置并返回位置
	cout << "字符串中出现oo的位置为:" << site << endl << endl;

	site = 0;				//遍历搜索所有o的位置
	do
	{
		site = Lyu.find('o', site);
		if (site == -1)
			cout << "搜索完毕,无其他项" << endl;
		else
			cout << "字符串中出现o的位置为:" << site << endl;
		site++;
	} while (site != 0);
	getchar();
}

它的执行结果是:


和大家提了几个常用函数,如

length()函数——查看字符串的长度

empty()函数——检查字符串是否为空,0表示不为空

append("字符串")——在字符串后添加新字符

find('字符', 0)——从0位查看第一个出现的该字符的位置

……


具体理论区别大家有兴趣可以去自行研究,我就不做太深入的介绍了,下面就到正题,这两者的相互转化。

string类怎么转换成一个char数组

下面是代码

#include<iostream>
#include<string>
using namespace std;
void main()
{
	string LyuS = "Welcome to learn C++";
	const char *LyuC = LyuS.data();		//字符串转换为字符数组
	cout << "LyuC :"<< LyuC << endl;

	for(int i = 0 ; i < LyuS.length() ; i ++)
		cout << "LyuC[" << i << "] :" << LyuC[i] << endl;

	char LyuC_2[10];
	LyuC_2[0] = 'a';			//给字符数组进行赋值
	for (int j = 1; j < 9; j++)
	{
		LyuC_2[j] = LyuC_2[j - 1] +1;
	}
	LyuC_2[9] = '\0';

	string LyuS_2 = LyuC_2;			//字符数组转化成字符串
	cout << "LyuS_2 :" << LyuS_2;

	getchar();
}

它的执行结果是:

 

const char *LyuC = LyuS.data();

这句话就是字符串转字符数组,我在不少资料里面发现他们把字符数组和字符指针分开了,其实在C++里面数组在某种意义上就是连续不断的指针,当然只限于在用法上,所以对于初学者如果不是要求完成度特别高,可以这么用,

string LyuS_2 = LyuC_2;

字符数组转成字符串就很是容易了,直接赋值即可。

好了,今天的分享到此为止,希望大家能对这两种字符存储类型有所了解。

 

  • 26
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
charstring都是C++中用于表示字符串的数据类型。他们之间有一些区别。 char是一个字符类型,用于表示单个字符。例如,我们可以使用char变量来存储一个字母或一个数字。例如,char letterOne = 'A';表示存储字母'A'的char变量。但是,char变量不可以直接存储字符串。例如,char letterTwo = "A";是错误的写法,因为char变量只能保存一个字符string是一个字符串类型,用于表示一串字符。我们可以使用string变量来存储任意长度的字符串。例如,string str = "Hello World!";表示存储字符串"Hello World!"的string变量。 在处理字符串时,我们可以使用一些函数来操作charstring。 1. strstr()函数是一个C++库函数,用于在一个字符串中查找子串。比如,我们可以使用strstr()函数来查找子串在字符串中第一次出现的位置。例如,char str1[] = "abcdefg"; char str2[] = "ced"; char* p1 = strstr(str1, str2); cout << p1-str1 << endl;会输出子串"ced"在字符串"abcdefg"中第一次出现的位置。 2. string类也提供了一些成员函数来操作字符串。例如,string类的substr()函数用于从字符串中提取子串。 综上所述,charstring都是用于表示字符串的数据类型,但在使用上有一些区别。char是单个字符类型,而string字符串类型,并且提供了更多的字符串操作函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值