Skip to content

输入输出(IO)

目录

参考资料:

转义字符

字符形式含义ASCII 代码
\a响铃7
\n换行10
\t水平制表(跳到下一个 Tab 位置)9
\b退格,将位置移到前一列8
\r回车,将位置移到本行开头13
\f换页,将位置移到下一页开头12
\v竖向跳格8
\\\92
\''39
\""34
\0空字符0
\ddd1~3 位八进制数所代表字符
\xhh1~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,右对齐,取两位小数即可实现上下小数点对齐

Copyright © 2022 田园幻想乡 浙ICP备2021038778号-1