C/C++ 输入函数总结

C:

在C中没有string类,用char字符串数组来表示字符串,以‘\0’来表示字符串的结束;
因为是用数组来表示字符串,对于数组限长检查很重要;

  1. scanf(),对空格敏感,只能输入单词而不能输入带空格的字符串,而且没有对数组限长的检查,非常不建议; 代替品是scanf_s(); 而数组要考虑到为结尾的’\0’预留位置;
  2. gets(),对空格不敏感,检测到回车结束输入,但是回车会残留到输入缓冲中;而且没有对数组限长的检查,不建议;代替品是gets_s(),fgets(),含有限长检查

C++:

C++中提供了string类,结尾不用包含’\0’,而且不要一开始就定义长度,因此string类的输入不需要限长检查;

  1. cin,对空格敏感,只能输入单词而不能输入带空格的字符串
  2. cin.getline(str,bufsize,EOF),不会残留回车,会读取回车并转换为空字符,而且可以自定义结束符,因为是针对char字符串数组的,因此依旧需要限长检查;
  3. getline(cin,str,EOF),是string类提供的方法,不会残留回车,可自定义结束符,不需限长检查;
  4. cin.get()与cin.getline相似,但是会有残留

在C/C++中,get/gets都会有回车残留,getline都没有残留

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值