最近在做题时发现了这样一个问题,有些题目的数据是以单行给出的,比如(2 3 -92 234 275 -7)这样的数列,用cin读取不太方便(cin一般以换行结束一个数据的输入),所以常规做法是将之转化为字符串再行处理,但是在已知数列长度的情况下可以用以下方法读取;
已知长度为N
for(i=0;i<N;i++)
cin>>a[i];
这种读取方法在实现上更方便(在一个新手看来,或许STL中有更好的方法不需要知道N)
---------------------------------------------
(不需要知道N)
再加点内容吧,要不然这篇也太水了点。。。
其实可以用cin>>noskipws读取所有字符
然后判断读入的字符是否是数字,如果是,那么把它放回到标准输入流,再以普通方式读取该数字,要用cin.putback();
具体可以这么写
while(cin>>c;){
if(isdigit(c))///isdigit()是标准库函数,<ctype>里还有很多非常方便的类似函数
cin.putback(c);放回去。。。
cin>>number;
}
结合其他ctype函数这个方法还可以用于其它输入,比如符号,回车等的判断和处理,效率上也没有明显下降
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-01-28 Zookeeper C API 指南六(异步 API 介绍)
2021-01-28 Zookeeper C API之接口描述
2021-01-28 再论SIP呼叫中的Call、Dialog和Transaction
2021-01-28 SIP 中的Dialog,call,session 和 transaction
2019-01-28 close_wait状态和time_wait状态(TCP连接)
2019-01-28 TCP连接状态详解及TIME_WAIT过多的解决方法