【类型商店】字符字符串(中)

啊,哈喽,小伙伴们大家好。我是#Y清墨,今天呐,我要介绍的是字符与字符串。 

导语 

上期我已经介绍了字符,接下来就来看看字符串吧。

一.论字符串

区别:例如’a’是字符a,双引号括起来的才是字符串,例如”a”是字符串a。

字符串输入

从键盘输入一个字符数组可以使用scanf(cin)语句或getline语句。

(1) cin语句

cin可以适用于字符数组和string变量。

string a;
cin>>a;

char s[100];
cin>>s;

 

(2)scanf语句

scanf函数只能针对char数组赋值。

char s2[100];
scanf("%s",s2);  //scanf的第二个参数要填数组名称,其实单独写s2的时候,表示的是s2这个数组的内存地址

char s3[100];
scanf("%s",s3+1);  //s3等同于s3[0]的地址,s3+1 等同于s3[1]的地址。本语句的意思是接收的字符信息放在从s3[1]开始的位置,跳过了s3[0],这对于有时候希望从下标1开始是很有用的

 

如果希望用scanf接收字符串并赋值给string变量,可以参考下面的例子

char s[100];
scanf("%s",s);

string a;
a=s;  //这句的意思是把字符数组s的内容初始化成一个string类实例返回给string 变量 a

 

(3)getline语句

格式:getline(cin,字符串名称);

说明:使用getline只能输入一个字符串。

例如:getline(cin,s1,s2); 是错误的。使用getline,是从光标开始的地方读到换行符也就是说读入的是一整行,而使用scanf是从光标开始的地方到空格,如果这一行没有空格,才读到行尾。

字符串输出

向屏幕输出一个字符串可以使用printf语句或cout语句。

(1)printf语句

格式:

  • printf("%s",字符数组名称); //printf不能用于string类的直接输出

  • 下面是错误例子

string a="1234"; 
printf("%s",a);`

 

说明:

  1. 用 %s 格式输出时,printf 的输出项只能是字符数组名称,而不能是数组元素。例如:printf("%s",a[5]);是错误的。

  2. 输出字符串不包括字符串结束标志符'\0'。 printf函数遇到'\0'的时候就结束输出了,如果字符数组没有'\0',调用printf输出的时候很可能会输出错误的信息。

(2)cout语句

cout语句适用于对字符数组或者string类变量,参见下面的例子:

string a;

cin>>a;
cout<<a<<endl;

char s[100];
scanf("%s",s);
cout<<s<<endl;

 

string 和 char数组的转换

string类和char数组有着密切的关系,但是两者又各自有一套函数。对于信息学考生初级到中级水平的学生而言,有几点建议

  1. 尽量搞熟一套,要么string,要么char数组。两套都搞得很熟太难。

  2. 如果一条题目要围绕着字符串做几个事情,有一部分的事情用string来做比较方便(或者是因为你记得string的某个函数),而做另外的事情用char数组来做方便,那这时候就存在着两者的转换。

把string的内容赋值给char数组:

string a="abcdef"; 
char s[100];

strcpy(s,a.c_str());  //c_str()是string的成员函数,可以把string的内容放入一个字符数组中,并返回字符数组的地址;而strcpy则是把第二个参数(字符数组)的内容拷贝到第一个参数(也是字符数组)

 

把char数组的内容赋值给string变量:

string a; 
char s[100];

scanf("%s",s);
a = s;  //

———————————————————————————————————————————

                                                祝大家端午节安康!

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值