输入输出(IO)
目录
参考资料:
转义字符
字符形式 | 含义 | ASCII 代码 |
---|---|---|
\a | 响铃 | 7 |
\n | 换行 | 10 |
\t | 水平制表(跳到下一个 Tab 位置) | 9 |
\b | 退格,将位置移到前一列 | 8 |
\r | 回车,将位置移到本行开头 | 13 |
\f | 换页,将位置移到下一页开头 | 12 |
\v | 竖向跳格 | 8 |
\\ | \ | 92 |
\' | ' | 39 |
\" | " | 34 |
\0 | 空字符 | 0 |
\ddd | 1~3 位八进制数所代表字符 | |
\xhh | 1~2 位十六进制数所代表字符 |
printf() (C)
c
printf("%.2f",a); //以2位小数输出a
printf("%3d",a); //不足3位整数前面补空格
printf("%03d",a); //不足3位整数前面补0
printf("%%"); //输出一个%
// printf('c'); //输出没有\0 的字符串时会出错
scanf() (C)
- sacnf 以空格或换行符作为输入的结尾
- 返回值为成功输入数据个数
- 没东西输入返回-1?
c
scanf("%d%f%c",&a,&b,&c);//用于输入数据,数据间以空格或回车区分,不读取空格
占位符
常用:
%c
: 字符。%d
: 十进制整数。%i
: 整数,基本等同于%d。%f
: 小数(包含 float 类型和 double 类型)。%ld
: 十进制 long int 类型。%o
: 八进制整数。%x
: 十六进制整数。%u
: 无符号整数(unsigned int)。%s
: 字符串。
其他:
%a
: 十六进制浮点数,字母输出为小写。%A
: 十六进制浮点数,字母输出为大写。%e
: 使用科学计数法的浮点数,指数部分的 e 为小写。%E
: 使用科学计数法的浮点数,指数部分的 E 为大写。%g
: 6 个有效数字的浮点数。整数部分一旦超过 6 位,就会自动转为科学计数法,指数部分的 e 为小写。%G
: 等同于%g,唯一的区别是指数部分的 E 为大写。%hd
: 十进制 short int 类型。%ho
: 八进制 short int 类型。%hx
: 十六进制 short int 类型。%hu
: unsigned short int 类型。%lo
: 八进制 long int 类型。%lx
: 十六进制 long int 类型。%lu
: unsigned long int 类型。%lld
: 十进制 long long int 类型。%llo
: 八进制 long long int 类型。%llx
: 十六进制 long long int 类型。%llu
: unsigned long long int 类型。%Le
: 科学计数法表示的 long double 类型浮点数。%Lf
: long double 类型浮点数。%n
: 已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。%p
: 指针。%zd
: size_t 类型。%%
: 输出一个百分号。
getchar() (C)
c
char c;
c=getchar();
// 得到一个字符的ASCLL码//也可以赋给整形,或不赋值
// 其实挺常用的
// 用于程序停顿,输入任意字符+回车继续
putchar() (C)
c
// putchar()
putchar(c); //输出一个字符
putchar(66);//输出B
puts() (C)
c
puts(a);//输出字符串a
gets() (C) (已被废弃)
C
gets(a);//输入字符串
//gets只以回车作为输入结束的标志,会读入空格
cout&cin(C++)
- cin 遇到空格、
'\0'
、'\n'
或 enter 时停止
c
cin>>str; //用字符数组名输入字符串,注意cin会在遇到空格时停止
cout<<str; //用字符数组名输出字符串,输出时遇到第一个就‘\0’停止,且不会输出‘\0’
//'\0'也可视为NULL
cout<<″We must study C\ //"\"为续行符(不输出)
++ hard!″;
cout<<a=b; //错误
cout<<(a=b); //正确//cout后跟赋值表达式要加括号
cout<<7<<endl; //可以直接输出数字
cin 出错时
c
cin.clear();
cin.ignore(INT_MAX, '\n');
cin 和 cout 的其他用法
c
cout<<a;
cout.put(a[1]);//等价于cout<<a[1];
cout.write(a,3);//输出a中前3个数
cin.getline(字符数组名,字符串长度,规定的结束符);
cin.get(字符数组名,字符串长度,规定的结束符);
//在满足字符串长度(包括‘\0’)或遇到规定的结束符(不会输入)时结束
//剩下的字符会存在缓存中,可用cin或get等输入
//可输入\n
eg:
cin.get(a,10,'h');
//剩下的字符开头就是h,所以a变为空
cin.get(a,10,'h');
控制符 (C++)
dec | 设置以十进制方式输出 |
---|---|
oct | 设置以八进制方式输出 |
hex | 设置以十六进制方式输出 |
setfill(c) | 设填充字符 c |
setprecision(n) | 设浮点数的有效位数为 n |
setw(n) | 设域宽为 n 个字符 |
setiosflags(ios::fixed) | 固定的浮点显示 |
setiosflags(ios::scientific) | 指数表示 |
setiosflags(ios::left) | 左对齐 |
setiosflags(ios::right) | 右对齐 |
setiosflags(ios::skipws) | 忽略前导空白 |
setiosflags(ios::uppercase) | 十六进制数大写输出 |
setiosflags(ios::lowercase) | 十六进制数小写输出 |
setiosflags(ios::showpoint) | 显示小数点 |
setiosflags(ios::showpos) | 显示正数符号 |
c
输出双精度数
double a=123.456789012345; //对a赋初值
cout<<a; //输出:123.456
cout<<setprecision(9)<<a; //输出:123.456789
cout<<setprecision(6); //恢复默认格式(精度为6)
cout<<setiosflags(ios∷fixed); //输出:123.456789
cout<<setiosflags(ios∷fixed)<<setprecision(8)<<a; //输出:123.45678901
cout<<setiosflags(ios∷scientific)<<a; //输出:1.234568e+02
cout<<setiosflags(ios∷scientific)<<setprecision(4)<<a; //输出:1.2346e02
输出整数
int b=123456; //对b赋初值
cout<<b; //输出:123456
cout<<hex<<b; //输出:1e240
cout<<setiosflags(ios∷uppercase)<<b; //输出:1E240
cout<<setw(10)<<b<<','<<b; //输出: 123456,123456
cout<<setfill('*')<<setw(10)<<b; //输出:****123456
cout<<setiosflags(ios∷showpos)<<b; //输出:+123456
tips:字段宽度为 10,右对齐,取两位小数即可实现上下小数点对齐