zoukankan      html  css  js  c++  java
  • 2019/8/4 数据输入/输出

        数据输入/输出

      对于一个能够正常运行的程序来说,快速正确输入数据是必不可少的环节。在OI中,这也是一项基本技能。这次我来总结一下OI中常出现的数据输入/输出操作。

      //格式实例中变量名用x替代。

      1.cin/cout

      头文件:<iostream>/<iostream.h>

      正式名称为输入/输出流。可广泛运用于直接输入/输出多种类型数据。使用方便简单,但耗时长,效率较stdio慢很多(3~4倍)。

      格式:cin  >> x;

            cout << x;

      骚操作:ios::sync_with_stdio(false);

      关闭iostream与stdio同步,加快cin/cout速度(但好像还是比scanf/printf慢一点点)。

      2.scanf/printf

      头文件:<cstdio>/<stdio.h>

      正式名称为标准输入/输出。可用于按格式直接输入/输出多种数据。使用较繁琐,耗时短。

      格式:scanf ("标识符与格式" ,&x)

            printf (" 标识符与格式",x)

      3.自制快读/快输

      基于头文件:<cstdio>/<stdio.h>中的getchar ( )/putchar( )函数。 

      速度快(优于scanf/printf),只能用于输入数字,用于数据较多场合。

      格式:x = re( );

         wr( x ) ;

      代码:

      快读

     1  long long  re()
     2  {
     3     char c=getchar();long long  res=0;int fg=1;//res 初值赋 0 , 1会炸
     4     while('0'>c||c>'9') 
     5     {
     6         if(c=='-')fg=-1;
     7         c=getchar();
     8     }
     9     while('0'<=c&&c<='9') 
    10     res=((res<<3)+(res<<1)+c-'0'),c=getchar();
    11     return res*fg;
    12  }

      快输

    void wr(int x) 
    {
        if(x<0) 
        {
            putchar('-');
            x=-x;
        }
        if(x>=10)wr(x/10);
        putchar(x%10+'0');
    }

      //还有名为超级快读的玩意由于太巨了就不介绍了

      4.freopen

      头文件:<cstdio>/<stdio.h>

      用于重定向输入输出流。可以在不改变其他代码的前提下改变输入/输出环境(将数据输出到文件)。在OI比赛与调试中经常用到。

      格式:freopen("文件名","访问权限",需重定向文件流)

      注:"访问权限"一般为" r"(只读)或"w"(只写),重定向文件流一般为stdin(标注输入流)或stdout(标注输出流)。

      

      “在TC2.0中,允许不引用此头文件而直接调用其中的函数,但这种做法是不标准的。也不建议这样做。以避免出现在其他IDE中无法编译或执行的问题。”------百度百科"stdio.h"词条

      在某些编译环境中不加头文件<cstdio>而调用其中函数不会报警,但正式提交时会挂掉,记的手动添加。

      另外,在实际运用中还可能用到fstream等操作,但由于重要程度不高,所以暂且不表。

  • 相关阅读:
    js18
    js17
    js16
    js15
    js14
    js13
    js12
    js11
    八月二十三的php
    八月二十二的php
  • 原文地址:https://www.cnblogs.com/randomaddress/p/11297880.html
Copyright © 2011-2022 走看看