浅谈输入输出
Nuyoah_awa · · 算法·理论
Hello, World!
从
cin 与 cout
我们最常见的的输入输出方式就是使用 cin 和 cout,cin 与 cout 可以输入输出几乎所有类型的变量,而且使用较为简单。
- 用法:
cin >>变量名;。
需要添加 <iostream> 库。
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << a;
return 0;
}
- 加速:
scanf 与 printf
scanf 与 printf 是 C 语言中的输入输出方式,总体时间比 cin 和 cout 快(当你用久了就会发现,有点时候比加速后的 cin 和 cout 还要快)
1.用法:
- scanf:
scanf("%d",&n);
其中 %d 表示变量类型,n 为变量名,& 表示将数据输入进该变量的地址处。
- printf:
printf("%d",n);
其中 %d 表示变量类型,n 为变量名,不需要添加 &。
对于各种不同的变量:
%s表示字符串。%c表示字符。%lf表示双精度浮点数 (double)。%d表示有符号整型(int)。%lld表示长整型 (long long)。根据系统不同,也可能是%I64d。%u表示无符号整型 (unsigned int)。%llu表示无符号长整型 (unsigned long long),也可能是%I64u。
除了类型标识符以外,还有一些控制格式的方式。许多都不常用,选取两个常用的列举如下:
%1d表示长度为1 的整型。在读入时,即使没有空格也可以逐位读入数字。在输出时,若指定的长度大于数字的位数,就会在数字前用空格填充。若指定的长度小于数字的位数,就没有效果。%.6lf用于输出,保留六位小数。
这两种运算符的相应地方都可以填入其他数字,例如 %.3lf 表示保留三位小数。
快读与快写
快读原理:
单个字符的读入速度要比读入数字快,因此我们以字符的形式先读入,然后通过编程再转为数字。
快读详解
板子
快读:
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
快写:
inline void write(int a)
{
if(a>9) write(a/10);
putchar(a%10+'0');
}
文件读写
文件的操作步骤:
- 打开文件,将文件指针指向文件,决定打开文件类型;
- 对文件进行读、写操作(比赛中主要用到的操作,其他一些操作暂时不写);
- 在使用完文件后,关闭文件。
freopen 函数
函数简介
函数用于将指定输入输出流以指定方式重定向到文件,包含于头文件 stdio.h (cstdio) 中,该函数可以在不改变代码原貌的情况下改变输入输出环境,但使用时应当保证流是可靠的。
函数主要有三种方式:读、写和附加。
命令格式
FILE freopen(const char filename, const char mode, FILE stream);
参数说明
- filename: 要打开的文件名
- mode: 文件打开的模式,表示文件访问的权限
- stream: 文件指针,通常使用标准文件流 (stdin/stdout) 或标准错误输出流 (stderr)
- 返回值:文件指针,指向被打开文件
- 文件打开格式(选读)
- r:以只读方式打开文件,文件必须存在,只允许读入数据 (常用)
- r+:以读/写方式打开文件,文件必须存在,允许读/写数据
- rb:以只读方式打开二进制文件,文件必须存在,只允许读入数据
- rb+:以读/写方式打开二进制文件,文件必须存在,允许读/写数据
- rt+:以读/写方式打开文本文件,允许读/写数据
- w:以只写方式打开文件,文件不存在会新建文件,否则清空内容,只允许写入数据 (常用)
- w+:以读/写方式打开文件,文件不存在将新建文件,否则清空内容,允许读/写数据
- wb:以只写方式打开二进制文件,文件不存在将会新建文件,否则清空内容,只允许写入数据
- wb+:以读/写方式打开二进制文件,文件不存在将新建文件,否则清空内容,允许读/写数据
- a:以只写方式打开文件,文件不存在将新建文件,写入数据将被附加在文件末尾(保留 EOF 符)
- a+:以读/写方式打开文件,文件不存在将新建文件,写入数据将被附加在文件末尾(不保留 EOF 符)
- at+:以读/写方式打开文本文件,写入数据将被附加在文件末尾
- ab+:以读/写方式打开二进制文件,写入数据将被附加在文件末尾
使用方法
读入文件内容:
freopen("data.in", "r", stdin);
// data.in 就是读取的文件名,要和可执行文件放在同一目录下
输出到文件:
freopen("data.out", "w", stdout);
// data.out 就是输出文件的文件名,和可执行文件在同一目录下
关闭标准输入/输出流:
fclose(stdin);
fclose(stdout);
文件读写详解
下一篇:浅谈各种排序