菜学C++ Day24 get()

继续昨天的cin.get()、【成员函数:cin.get(数组名,数组长度,结束符)】、cin.getline()

  1. cin>>是从第一个非空白字符开始到下一个空白字符结束(缓冲区读数,残留数据(包括该结束的空白字符)下次直接读入,跳过输入)
     
  2. cin.get()
    它与cin.get(数组名,数组长度,结束符)是重载(函数名相同,但参数不同,所以达成的作用完全不同)
    1. ch=cin.get()和cin.get(char ch)都是读取一个字符的意思
    2. 且都对空格、制表符、换行符号不敏感,可以读入
      1.  
        #include<iostream>
        using namespace std;
        int main() {
        	cout << "请输入两个字符:";
        	char a, b;
        	//输入无空格、含space、tab、enter
        	a = cin.get();
        	b = cin.get();
        	cout <<"a为:"<< a << int(a) << endl;
        	cout <<"b为:"<< b << int(b) << endl;
        	return 0;
        }
      2.  无空格

      3. 有space(ASCII为32)

      4.  有tab(ASCII为9)

      5. 有enter(ASCII为10)

  3.  成员函数:cin.get(数组名,数组长度,结束符【默认为enter,且结束符仍在缓冲区】)
    1. 当一开始第一个输入字符(即前面无其他任何字符)就遇到结束符情况下,将不会正常输出,但缓冲区中依然有该结束符
      #include<iostream>
      using namespace std;
      int main() {
      	char a[5], b;
      	//输入“字符A立即enter”
      	cin.get(a,3,'A');//所以a在一开始就结束,不能正常输出,后续b也不能正常输出
          //利用cin.clear()可以清楚缓冲区中的错误数据
          cin.clear();
      	cin.get(b);
      	cout << "a为:" << a << int(a) << endl;
      	cout << "b为:" << b << int(b) << endl;
      	return 0;
      }
      1.  若无cin.clear()
          

      2. 若有cin.clear()

          
  4. cin.getline(字符数组名,接收长度【可以超过本身定义的长度】,结束符)
    用法与cin.get(字符数组名,接收长度,结束符)极为类似
    1. cin.get()当输入超长时不会引起错误,后面cin操作会继续执行,且直接从缓冲区中取数据
      #include<iostream>
      using namespace std;
      int main() {
      	char a[5], b;
      	cin.get(a,3);
      	cin >> b;
      	cout << "a为:" << a  << endl;
      	cout << "b为: " << b << endl;
      	return 0;
      }
      结果:
    2. cin.getline()当输入超长时会引起错误,后面的cin操作将不再执行
      #include<iostream>
      using namespace std;
      int main() {
      	char a[5], c;
      	cin.getline(a,3);
      	cin >> c;
      	cout << "a为:" << a << endl;
      	cout << "c为: " << c << int(c) << endl;
      	return 0;
      }
      结果:

今天差不多就到这里吧,应该是差不多能分清楚了。不过这个CSDN的编辑操作把我搞懵了,我一个ctrl+z就把我一大段的东西都撤销了,而且恢复不了,还好几次都这样,就离谱!!! 


最后还是练了几道题:

字符串逆序输出
 

#include<iostream>
using namespace std;
int main() {
	char str[100], * s1=str, * s2=str, t;
	cin.getline(str, 100);
	//s1指向首地址,s2指向尾地址
	while (*s2 != '\0') 
		s2++;
	s2--;
	//交换头尾所指内容,地址传递
	while (s1 < s2) {
		t = *s1;
		*s1 = *s2;
		*s2 = t;
		s1++;
		s2--;
	}
	//非字符数组是不能整体输出的
	cout << str << endl;
	return 0;
}

测试结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值