最近在学C++时遇到了一个疑惑,看primer plus 第六版上的例题有的需要用cin.get()吃掉输入流中的回车(换行),如81页的程序清单4.6。但后来看到循环那章时就疑惑,在用cin>>循环输入时为什么就不需要cin.get()?后来请教了大神才明白。
是否需要使用cin.get()吃掉输入流中的回车要依据下一次读取的方式而定。如使用cin.getline()或类C输入scanf()或put()等的时候,就需要用cin.get()在下一次读取前清空残余缓存;若使用cin>>则不需要,因为cin是智能指针,它将跳过缓冲区的无效字符(如这里的回车),直到找到非空白字符为止,然后它将读取字符,直到再次遇到空白为止。
个人学习心得,如有错误,还请批评指正。
什么时候用cin.get()吃掉输入流中的换行符
最新推荐文章于 2023-02-14 13:06:46 发布