C++ cin.sync()和cin.ignore()

cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确。

有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用cin.ignore(),其使用方法是:

cin.ignore(int intExp, char chExp);

其中intExp 是一个整型表达式,也可以是一个整型数值,这个数值表示在一行中忽略的字符的最大数目,比如说intExp=100;还有一个参数chExp,是一个字符表达式。表示如果遇到一个字符值等于chEXP,那么就停止ignore(),如果ignore100个字符之后还没遇到值等于chEXP的字符,那也得停止ignore(),所以100ignore()所忽略的最大字符数。 
下面是几个例子

#include<iostream>

#include<cstdlib>

int main()

{

  int ival1 = 0, ival2 = 0;

  std::cin >> ival1;

  std::cin.ignore(100, '\n');

  std::cin >> ival2;

  std::cout << "ival1 = " << ival1 << std::endl;

  std::cout << "ival2 = " << ival2 << std::endl;

  system("pause");

  return 0;

}

 


按下Enter后,ival1接收了12,剩余的都被清除掉了,因为Enter就是本身就是空行符,然后输入流会等待第二次输入为ival2赋值。如过没有中间那句std::cin.ignore(100, '\n') ,则不会等待第二次输入,直接输出ival1 = 12 ival2 = 34


std::cin.ignore(100, '\n') 改成std::cin.ignore(2, '\n')呢,ival1接收了12之后,ignore清除掉两个字符:


为什么ival24而不是78呢?

因为我们所用的IO对象cin cout 都是操纵char数据的,不管我们输入的是什么数据,cin cout 都会转成 char来处理,例如我们想要输出的是一个整形变量的值,那么在输出前,cout会将该变量的值转成字符,在进行输出(C++ Primer Plus中有一句话:In essence, the C++insertion operatoradjusts its behavior to fit the type of data that follows it.),所以上面ignore清除掉了一个空格和一个字符3,所以缓冲区中剩余45678,所以ival2等于4.

如果cin.ignore()不给参数,则默认参数为cin.ignore(1,EOF),即把EOF前的1个字符清掉。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data对Cassandra 3的支持

名为Ingalls的新Spring Data发布火车的发布引起了我的关注&#xff0c;其中之一是Spring Data Cassandra最终支持Cassandra 3。 因此&#xff0c;我回顾了我的一个旧样本&#xff0c;并尝试了较新版本的Cassandra。 安装Cassandra 第一步是安装本地版本的Cassandra&#xff0c…

第12秒做视频封面:阿里云视频截帧功能

代码&#xff1a; <video src"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4"poster"http://ruilai-course.imreliable.net/fangcao_course/{{results.VideoName}}.mp4?x-oss-processvideo/snapshot,t_12000,f_jpg,w_750,…

winform什么时候会调用closed事件_async/await 给程序带来了什么?

如果说async给ASP.NET带来的是处理能力的提高&#xff0c;那么在WinForm中给程序员带来的好处则是最大的。我们再也不用因为要实现异步写回调或者绑定事件了&#xff0c;省事了&#xff0c;可读性也提高了。不信你看下面我们将调用我们那个web service的代码在.NET4.5下实现一下…

Vtk出现Generic Warning时

Generic Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28 Error: no override found for ‘vtkPolyDataMapper’. Warning: In D:\ProgramFiles\VTK\VTK-7.0.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43 vtkInte…

Properties 持久的属性集

特点&#xff1a;1、Hashtable的子类&#xff0c;map集合中的方法都可以用。2、该集合没有泛型。键值都是字符串。3、它是一个可以持久化的属性集。键值可以存储到集合中&#xff0c;也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 // 根据ke…

MySQL的简单使用

一&#xff0c;MySQL的使用 (1)启动MySQL服务&#xff08;DOS下输入&#xff09;net start mysql / 停止服务net stop mysql&#xff0c;其中mysql是你的数据库服务器的名字。 (2)登录MySQL:mysql -h localhost -u root -p回车后输入你的数据库登录密码。 出现如上图的信息说…

错误C4996:'std :: _Copy_impl'

编译示例程序时出现 错误C4996&#xff1a;std :: _Copy_impl&#xff1a;使用可能不安全的参数的函数调用(error C4996: std::_Copy_impl:Function call with parameters that may be unsafe) 在于处理器中添加 _SCL_SECURE_NO_WARNINGS

python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

正在学习python编程&#xff0c;把一些小技巧记录下来备查 计算技巧 正常的条件语句如下if a>b:caelse:cb 可以写为以下简洁的语句a100b200ca if a>b else bprint(c) 作图 python中可以使用numpy的array来高效处理数组 下面主要列举matplotlib的基本使用方法&#xff0c;…

jsf标签p:ajax_JSF AJAX请求的会话超时处理

jsf标签<p:ajax>JSF AJAX请求的会话超时处理 当我们使用AJAX行为开发JSF应用程序时&#xff0c;在处理Ajax请求的超时情况时&#xff0c;我们可能会遇到问题。 例如&#xff0c;如果您使用的是基于J2EE Form的身份验证&#xff0c;则会话超时后应将正常请求重定向到登录页…

使用javamail发信过程中的一些问题及解决方法

今天在研究javamail发信的过程中&#xff0c;出现了一些小问题&#xff0c;现总结如下&#xff0c;以免后来者走些不必要的弯路&#xff0c;先把完整的能够正常运行的代码示例粘贴如下&#xff1a; 发邮件源代码&#xff1a; package com.hyq.test; import java.util.Propertie…

VIsual Studio编译OpenCV:无法打开python27_d.lib(python36_d.lib)的问题

在用 VS2015 编译 Debug 版的 openCV 源码时&#xff0c;最后一步生成 INSTALL&#xff0c;碰到了下面问题&#xff1a;因为配置 Windows 版 caffe 的需要&#xff0c;我先安装了一个 Anaconda3&#xff08;3.6版本&#xff09;&#xff0c;caffe 最高支支持到 3.5 &#xff0c…

python做硬件自动化测试仪器_基于Python PyVisa和GPIB的硬件测试仪器控制方法

基于Python和GPIB的硬件测试仪器控制方法 背景 在物联网通信时代&#xff0c;嵌入式模块开发越发广泛&#xff0c;自动化测试成为大家老生常谈的话题。对于一些高精度仪器&#xff0c;我们知道它是用GPIB控制用来测试&#xff0c;也希望可以通过一个程序实现自动化控制&#xf…

外点惩处函数法·约束优化问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主同意不得转载&#xff0c;博客主页 http://blog.csdn.net/i_love_home https://blog.csdn.net/zstu_wangrui/article/details/36242529 外点惩处函数法约束优化问题 外点法惩处函数&#xff08;r添加&#xff0c;SU…

在单元测试和TDD中指定时间的重要性

最近&#xff0c;我一直在写与自动测试有关的更高级的概念&#xff08;主要与Spock有关&#xff09;。 但是&#xff0c;在进行测试培训时&#xff0c;我清楚地看到&#xff0c;通常对特定工具的知识并不是主要问题。 即使使用Spock&#xff0c;也可以编写肿且难以维护的测试&a…

40个Java多线程问题总结

前言 Java多线程分类中写了21篇多线程的文章&#xff0c;21篇文章的内容很多&#xff0c;个人认为&#xff0c;学习&#xff0c;内容越多、越杂的知识&#xff0c;越需要进行深刻的总结&#xff0c;这样才能记忆深刻&#xff0c;将知识变成自己的。这篇文章主要是对多线程的问题…

.pro.user文件

.pro.user 用于记录打开工程的路径&#xff0c;所用的编译器、构建的工具链、生成目录、打开工程的qt-creator的版本等。 当更换编译环境时&#xff0c;要将其删除。

python tkinter实例_python绘制一个图形示例源码(tkinter)

【实例简介】 【实例截图】【核心代码】 # -*- coding: utf-8 -*- #!/usr/bin/python import math from tkinter import * class PTS: def __init__(self): self.x 0 self.y 0 points [] def LineToDemo(): screenx 400 screeny 400 canvas Canvas(width screenx,height…

PHP算法之冒泡排序

//冒泡排序 //①思路,先比较出第一次,找一个最大的值,排到最后; //②重复count遍之后,就能得到排序; //③优化,每一次循环之后不需要再次全部重复; $array [11,5,4,58,1,222,34]; for ($j 0; $j< count($array)-1; $j) { for($i 0 ; $i < count($array)-$j-1; $i){if(…

jaxb 命名空间_在JAXB解组期间应用名称空间

jaxb 命名空间对于某些XML模式来说&#xff0c;它是一组严格的规则&#xff0c;用于规定XML文档的结构方式。 但是对于其他人来说&#xff0c;通常的准则是指出XML的外观。 这意味着有时出于某些原因&#xff0c;人们希望接受不符合XML模式的输入。 在此示例中&#xff0c;我将…

pro文件

配置 注释 以“#”开始&#xff0c;到这一行结束。 快捷键&#xff1a;Ctrl / CONFIG 指定编译器选项和项目配置&#xff0c;值由qmake内部识别并具有特殊意义。 以下配置值控制编译标志&#xff1a; 选项说明release项目以release模式构建。如果也指定了debug&#xff0c;那么…