(1)cin和cin.get()(2)(拼接字符串相关事项)(3)cin.getline,getline,gets三个函数的区别更新

char a[3] asd strlen(a)=3
(-1)fgets比scanf(%s)要快,但是fgets会读入换行符,len记得–
(0)注意%s,从非空格和非换行开始读入,当开始读入后,如果遇到空格和换行读入停止,并且如果读入到换行符会将换行符加入缓冲区,(注意:空格不会放入缓冲区)。如果后面仍然是%s,则跳过,如果是%c,可以读入到换行符。对于缓冲区的换行符可以用getchar()跳过
(1)Cin 忽略前导的空格,输入的回车符转入缓冲区,注意cin,!!遇到空格,回车,Tab键截至后,结束符仍在缓冲区。
cin.get(),可以吃任意一个字符,包括回车符
(2)拼接字符串自动消除‘\0’
(3)cin.getline: 和geline 读到结束符,!!!缓冲区会丢掉结束符,结束符会转换为’\0’,注意读入的string 长度不包括’\0’
cin.getline 和gets是读入char []类型属于C 而,getline是读入string类型,属于C++的,没有本质区别]
gets:从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
(4)getline 读取到换行符结束读入并且会把换行符丢掉成’\0’。

此函数一次读取多个字符(包括空白字符),直到读满N-1个,或者遇到指定的结束符为止(默认的是以’\n’结束)。其语法为:cin.getline(字符指针(char*),字符个数N(int),结束符(char));

#include
using namespace std;

int main()
{
char a[10];
cin.getline(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}

输入:1234567890123

输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符’\0’)

注意:cin.getline()函数缺省的第三个参数为’\n’,如果把cin.getline(a,10)改为cin.getline(a,10,’#’)

#include
using namespace std;
int main()
{
char a[10];
cin.getline(a,10,’#’);
cout<<a<<endl;
return 0;
}

输入:1234#567890

输出:1234

getline:

注意:与cin.getline功能类似,但是参数不一样,也属于两个不同的流,是两个不一样的函数。getline接受的字符串长度不受限制

#include//getline包含在string头文件里
#include
using namespace std;
int main()
{
string str;
getline(cin,str,’#’);
char c=getchar();
cout<<str<<’ '<<c<<endl;
return 0;
}

输入为:aa#b

输出为:aa b

gets:

C中的函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出

与getline函数功能相似,但是不能自定义结束符,只能换行符结束

#include “stdio.h” //这个头文件包含gets()函数
int main(void)
{
char str1[5];
gets(str1);
printf("%s\n", str1);
return 0;
}

输入:ab c

输出:ab c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值