关于c++输入输出的一些小问题
来源:互联网 发布:wp10记录仪软件 编辑:程序博客网 时间:2024/06/16 09:04
各位写代码的时候总会遇到一些奇奇怪怪的问题,一些问题甚至让你怀疑你的智商,其中最简单又是最头疼的就是输入输出的问题。而我们最该担心的不是速度够不够快的问题(因为很多人还用不上),而是如何正确的输入输出那些奇形怪状的测试数据,输出是最可控的,那么就要解决输入的问题了。 面对不知道有多少个数据的时候我们通常有两种方式方式,而此时你又不愿意直接当成字符串来读,就像这样:
char a[1000];scanf("%s",a);//或者是这样cin>>a;
因为这样做的话会带来很多问题,首先,也许你想读入一个数据就处理一个数据,但它不告诉你给了多少个的时候。然后,你可能读入字符串后会涉及到一些截取,例如分成两个数据之类的,这样的做法显然就不优了,那么怎么做呢?你可以这样:
while(scanf("%c",ch)!=EOF){ ...;}
值得一提的是scanf的返回值是你成功读入数据的个数,如果失败,就返回0,但建议大家使用EOF文件结束符来判断。那么有一个不得不提的问题出现了,要是你手贱在要读入的数据后面还多打了一些回车空格什么的,它也会很诚实的将所有字符读进来。 当然如果你不愿意用scanf,害怕犯错误,那么你们还可以使用cin,就像这样:
while(cin>>ch){ ...;}
由于cin的特殊性,标准输入输出流会帮助你回避一些可能的人为错误,比如数据读完后的回车空格什么的。cin虽然不是库函数,是一个操作符,但它仍然有值: goodbit 无错误正常 eofbit 文件结束 badbit 有致命错误无法挽回 failbit 输入错误,可以挽回 当然如果你想设置一些其他的读入结束符,那就在while()循环的判断条件中去改了。通常这时我们用getchar()来代替scanf和cin,因为这样才能知道到底自己读入的是什么,就像这样:
while(1){ char a=getchar(); if(a==ch)//ch由自己决定 break; ......}
希望这能对大家有所帮助吧!
阅读全文
0 0
- 关于c++输入输出的一些小问题
- 关于一些c/c++小问题的总结
- 关于c的printf一些小问题技巧
- 一些输入输出的问题
- 关于C的一些小知识点
- 关于一些小问题
- 关于EIGRP一些小问题的解答
- 关于jar包的一些小问题
- 关于简历的一些小问题
- 关于struts2的一些小问题
- 关于进程的一些小问题
- 关于iis部署的一些小问题
- 关于递归问题的一些小例子
- 关于Ajax请求的一些小问题
- 关于hive sql的一些小问题
- 关于CCMultiColumnTableView一些小问题的修改
- 关于php学习的一些小问题
- 关于scrollview的一些小问题
- ROS学习第二弹(Package/Nodes/Topic)
- 排序算法——稳定性、比较次数、交换次数
- Zookeeper 中的ACL
- Python报错——错误“AttributeError:'builtin_function_or_method' object has no attribute 'sleep'”
- DSOD: Learning Deeply Supervised Object Detectors from Scratch
- 关于c++输入输出的一些小问题
- java SE8学习(一)lambda表达式
- Django实战开发遇到一些问题和解决方法
- 《jenkins部署》
- LESS预处理器
- 最大似然估计和最小二乘法
- 02React的JSX 与Style
- RASAC 入门
- DB2 SQL0668N Operation not allowed for reason code "7" on table