输出时左对齐与右对齐,补全
C语言
在C语言中我们可以这样来实现左右对齐
printf("%-3d
",3);
printf("%3d
",3);
这样得到的结果就是
3
3
如果像补零的话,就这样写
printf("%-03d
",3);
printf("%03d
",3);
3
003
如果保留多少个空格是一个变量的话,则变量部分使用*
来代替
int n = 4;
printf("%-0*d
",n,3);
printf("%0*d
",n,3);
3
0003
C++
在C++中是要引入iomanip
这个头文件,然后
- 使用
setw
来控制间距 - 使用
setiosflags
来控制左右对齐 - 使用
setfill
来控制补什么字符
#include <iomanip>
#include <iostream>
using namespace std;
int main(){
int n = 4;
cout << setiosflags(ios::left) << setw(n) << setfill('0') << 3 << endl;
cout << setiosflags(ios::right) << setw(n) << setfill('0') << 3 << endl;
return 0;
}
3000
0003
注意:这里C++把所有空格全换乘0了。
输出时改变进制
在C语言中使用%d
,%o
,%x
来改变,比如
int n = 15;
printf("%dn",n);
printf("%o",n);
printf("%x
",n);
printf("%X
",n);
15
17
f
F
在C++中
int n = 15;
cout << n << endl;
cout << oct << n << endl;
cout << hex << n << endl;
15
17
f
输出到文件
在C/C++中如何使用输入输出流呢?下面我们来一一看,其实都很简单。
C
首先我们需要文件指针
FILE *fin, *fout;
fin = fopen("data.in", "rb");
fout = fopen("data.out", "wb");
然后我们只需要输入和输出改成如下就可以了
int a;
fscanf(fin, "%d", &a);
fprintf(fout, "%d", a);
等我们不想用文件输入输出的时候只需要把fin
改成stdin
,把fout
改成stdout
就行了。
int a;
fscanf(stdin, "%d", &a);
fprintf(stdout, "%d", a);
最后我们使用完毕,要记得的关闭文件
fclose(fin);
fclose(fout);
C++
优秀的C++就更简单了,只要引入fstream
头文件,然后不需要指针,这里直接就是专门的类ifstream
与 ofstream
.
ifstream fin("data.in");
ofstream fout("data.out");
同样的,把输入输出该成
int a;
fin >> a;
fout << a << endl;
不想用的时候改回来就行了
int a;
cin >> a;
cout << a << endl;
最后我们使用完毕,要记得的关闭文件
fin.close();
fout.close();