关于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;    ......}
    希望这能对大家有所帮助吧!
原创粉丝点击