C++终止cin输入while循环时多读取^Z或^D的问题

news/2025/1/13 7:54:18/

原代码:

istream& operator>>(istream& is, map<string, int>&mm)
{string ss="";int ii=0;is >> ss>>ii;mm[ss]=ii;return is;
}int main()
{map<string,int>msi;while(cin>>msi);return 0;
}

问题:

当用^Z终止while(cin>>msi)时,^Z会被读入ss,msi会被插入msi[ss]=0; 

原因:

^Z被当作string读入,当再次输入^Z时,while循环才会被终止;

解决方案:

如果ii没有被写入新值,则不插入一新map元素,此时,读入ss的^Z会随着离开局部作用域而销毁。如下:

istream& operator>>(istream& is, map<string, int>&mm)
{string ss="";int ii=0;is >> ss;if(is>>ii)mm[ss] = ii;return is;
}

解决思路:

1.查看控制台输出,得知^Z被当作string读入;

2.试图通过监控流的状态来防止^Z被读入。例如当读取到流末尾的时候,停止读入。但是^Z依然被当作流末尾。故该措施无效;

3.查看>>操作符,想到既然只有ss被赋值,ii没有被赋值,故而可以以ii是否被赋值为条件,来决定是否插入新的map元素。


http://www.ppmy.cn/news/990169.html

相关文章

Spring注解的原理

注解&#xff08;Annotation&#xff09;在Java中是一种元数据&#xff0c;它可以为代码提供额外的信息&#xff0c;但本身不会影响程序的执行。在Spring框架中&#xff0c;注解被广泛用于标记组件、配置依赖关系以及进行AOP等操作。我们平时是使用注解的场景有很多,原理却知之…

QGraphicsView实现简易地图1『加载离线瓦片地图』

最简单粗暴的加载方式&#xff0c;将每一层级的所有瓦片地图全部加载 注&#xff1a;该方式仅能够在瓦片地图层级较低时使用&#xff0c;否则卡顿&#xff01;&#xff01;&#xff01; 瓦片地图数据来源&#xff1a;水经注-高德地图-卫星地图 瓦片地图瓦片大小&#xff1a;25…

报数游戏、

描述 有n人围成一圈&#xff0c;顺序排号。从第1个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人退出圈子&#xff0c;问最后留下的是原来的第几号的那位。。 输入 初始人数n 输出 最后一人的初始编号 输入样例 1 3 输出样例 1 2 输入样例 …

Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务&#xff0c;有的小伙伴或者童鞋们乍一听可能不信&#xff0c;或者会问如何通过命令行启动appium服务呢&#xff1f;且听一一道来。 一睹为快 其实相当的简单&#xff0c;不看不知道&#xff0c;一看吓一跳&#xf…

SqlServer读写分离对等发布

SqlServer读写分离对等发布: 对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。 注意点: 1.各服务器的数据库名字要保证一样。 2.发布名称必须保持一致。 3.各服务器必须都是…

ChatGPT 实现前一天

提出需求 个人输入需求&#xff1a; Java实现键盘输入日期 输出前一天&#xff0c;需要考虑润年和非润年&#xff0c;2月是否有29号&#xff0c;大月小月的区分等细节处理&#xff0c;不符合的有对应提示&#xff0c;不使用java包里的封装好的类 ChatGPT4分析出的语义&#xff…

图像中的曲率和梯度概念

图像中的曲率和梯度概念 1、曲率2、梯度 1、曲率 曲率是描述曲线在某点处的弯曲程度的度量指标。对于二维图像上的曲线&#xff0c;可以通过计算曲率来描述其在某一点处的曲线弯曲情况。具体而言&#xff0c;曲率可以通过求曲线的二阶导数来计算&#xff0c;其定义为曲线上某一…

Android Glide预处理preload原始图片到成品resource 预加载RecyclerViewPreloader,Kotlin

Android Glide预处理preload原始图片到成品resource & 预加载RecyclerViewPreloader&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_MED…